【发布时间】:2022-01-15 21:26:45
【问题描述】:
我有两个单选按钮:radio1 和 radio2,还有一个 select 输入。
选择值取决于单选按钮。
每当我选择radio1 时,我都想将select 的值设置为1。
我尝试将defaultValue 和value 设置为select 输入,但每次我从radio2 切换回radio1 时,该值始终设置为2。
这是我的代码,非常感谢任何帮助:
import "./styles.css";
import { useState } from "react";
const selectItems = {
name: "size",
fields: {
radio1: [
{
value: "1"
},
{
value: "2"
}
],
radio2: [
{
value: "2"
},
{
value: "3"
},
{
value: "4"
}
]
}
};
const App = () => {
const [values, setValues] = useState({ radio: "radio1", select: "2" });
const handleChange = (name, value) => {
setValues((s) => {
return { ...s, [name]: value };
});
};
return (
<div className="App">
<h2>
How do I make the Select always be '1' when Radio1 is selected after
selecting Radio2?
</h2>
<input
type="radio"
id="radio1"
value="radio1"
name="radio"
onChange={() => handleChange("radio", "radio1")}
/>
<label htmlFor="radio1">Radio1</label>
<input
type="radio"
id="radio2"
value="radio2"
name="radio"
onChange={() => handleChange("radio", "radio2")}
/>
<label htmlFor="radio2">Radio2</label>
<br />
<select
id="size"
name="size"
onChange={(e) => handleChange("select", e.target.value)}
>
{selectItems.fields[values.radio].map(({ value }) => {
return (
<option key={value} value={value}>
{value}
</option>
);
})}
</select>
</div>
);
};
export default App;
示例:https://codesandbox.io/s/goofy-danny-p1l3s?file=/src/App.js:0-1460
编辑:
根据一些答案的建议,我尝试将“已选择”设置为 true。事实上,我以前试过这个,但忘了在我的问题上提到它。这似乎可行,它在浏览器上给了我想要的效果,但是我在控制台上收到了这个错误:
Warning: Use the `defaultValue` or `value` props on <select> instead of setting `selected` on <option>.
【问题讨论】:
标签: javascript reactjs select use-state