不受控的选择元素

ReactReactBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将学习如何在 React 中创建一个不受控的 <select> 元素,使用回调函数将其值传递给父组件。我们将使用 selectedValue 属性来设置 <select> 元素的初始值,并使用 onChange 事件将新值发送给父组件。本实验还将介绍如何使用 Array.prototype.map() 为每个传递的值创建 <option> 元素。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL react(("React")) -.-> react/FundamentalsGroup(["Fundamentals"]) react/FundamentalsGroup -.-> react/jsx("JSX") react/FundamentalsGroup -.-> react/event_handling("Handling Events") react/FundamentalsGroup -.-> react/list_keys("Lists and Keys") subgraph Lab Skills react/jsx -.-> lab-38360{{"不受控的选择元素"}} react/event_handling -.-> lab-38360{{"不受控的选择元素"}} react/list_keys -.-> lab-38360{{"不受控的选择元素"}} end

不受控的选择元素

虚拟机中已提供 index.htmlscript.js。一般来说,你只需要在 script.jsstyle.css 中添加代码。

这是一个渲染受控 <select> 元素的组件。该组件接受一个值数组和一个回调函数,用于将选定的值传递给其父组件。以下是使用此组件的步骤:

  • 使用 selectedValue 属性设置 <select> 元素的初始值。
  • 使用 onValueChange 属性指定当 <select> 元素的值发生变化时应调用的回调函数。
  • values 数组使用 Array.prototype.map() 为每个传递的值创建一个 <option> 元素。
  • values 中的每个项应该是一个包含两个元素的数组,其中第一个元素是该项的 value,第二个元素是它的显示文本。
const Select = ({ values, onValueChange, selectedValue, ...rest }) => {
  return (
    <select
      defaultValue={selectedValue}
      onChange={({ target: { value } }) => onValueChange(value)}
      {...rest}
    >
      {values.map(([value, text]) => (
        <option key={value} value={value}>
          {text}
        </option>
      ))}
    </select>
  );
};

以下是使用此组件的示例:

const choices = [
  ["grapefruit", "葡萄柚"],
  ["lime", "酸橙"],
  ["coconut", "椰子"],
  ["mango", "芒果"]
];

ReactDOM.createRoot(document.getElementById("root")).render(
  <Select
    values={choices}
    selectedValue="lime"
    onValueChange={(val) => console.log(val)}
  />
);

请点击右下角的“Go Live”以在端口 8080 上运行网络服务。然后,你可以刷新“Web 8080”标签页来预览网页。

总结

恭喜你!你已经完成了“不受控的选择元素”实验。你可以在 LabEx 中练习更多实验来提升你的技能。