【问题标题】:Default value is not displaying in select drop down box of react hooks app默认值未显示在 React hooks 应用程序的选择下拉框中
【发布时间】:2022-10-24 10:37:28
【问题描述】:

在我的反应钩子选择下拉菜单中,默认值不显示。在页面加载时,我想在下拉列表中显示 Select Position。 有人可以告知为什么它不显示默认值吗?

代码沙箱链接: https://codesandbox.io/s/sad-diffie-kx9h49?file=/src/App.js:0-991

import "./styles.css";
import React, { useEffect, useState } from "react";

export default function App() {
  const [defaultValue, setDefaultValue] = useState("Select Position");
  const [positionType, setPositionType] = useState([
    "Goal Keeper",
    "Striker",
    "Attacking Midfielder",
    "Right Midfielder",
    "Defending Midfielder",
    "Left Midfielder",
    "Center Back",
    "Right Fullback",
    "Left Fullback"
  ]);

  useEffect(() => {
    setDefaultValue(defaultValue);
  }, []);

  const handlePositionTypeChange = (e) =>
    console.log(positionType[e.target.value]);
  return (
    <div className="App">
      <label>Position</label>
      <select
        defaultValue={defaultValue}
        onChange={(e) => handlePositionTypeChange(e)}
        key={defaultValue}
        className="browser-default custom-select"
      >
        {positionType.map((position, key) => (
          <option value={key}>{position}</option>
        ))}
      </select>
    </div>
  );
}

【问题讨论】:

  • 选项值应分配一个位置而不是键,因为键仅给出索引。您可以查看我的以下答案

标签: javascript reactjs


【解决方案1】:

import "./styles.css";
import React, { useEffect, useState } from "react";

export default function App() {
  const [selectedValue, setSelectedValue] = useState("Select Position");
  const [positionType, setPositionType] = useState([
    "Goal Keeper",
    "Striker",
    "Attacking Midfielder",
    "Right Midfielder",
    "Defending Midfielder",
    "Left Midfielder",
    "Center Back",
    "Right Fullback",
    "Left Fullback"
  ]);


  const handlePositionTypeChange = (e) => {
    console.log("e.target.value", e.target.value);
    setSelectedValue(e.target.value);
  };
  return (
    <div className="App">
      <label>Position</label>

      <select
        value={selectedValue ? selectedValue : ""}
        onChange={handlePositionTypeChange}
        className="browser-default custom-select"
      >
        <option value="Select Position" disabled>
          Select a color...
        </option>
        {positionType?.map((position, key) => (
          <option key={key} value={position}>
            {position}
          </option>
        ))}
      </select>
    </div>
  );
}

【讨论】:

  • 在这种方法中,我们需要在反应组件中有两个 option 标签对吗?
  • 如果您想将其保留在数组中,则可以选择一个选项,否则您可以分别使用两个选项标签。
  • @Shubam Sharma ..抱歉又看了一遍,在实现默认值后,从下拉列表中选择的值没有显示。
  • 即使从下拉列表中选择任何值,它也始终显示默认 Select a position
猜你喜欢
  • 2021-08-18
  • 2021-08-08
  • 2016-09-23
  • 2018-02-13
  • 2021-08-24
  • 1970-01-01
  • 2019-01-20
  • 2021-11-28
  • 2021-02-03
相关资源
最近更新 更多