【发布时间】:2021-04-12 23:07:06
【问题描述】:
我有一个简单的列表,其中每个元素都有无线电输入。它们的行为是分开的,这意味着每个选择都会改变该特定元素的状态。
现在,当我尝试为 option2 设置默认值时
const [Selected, setSelected] = useState("option2");
在console.log(Selected)中,我没有返回option2,而是如下
{0: "o", 1: "p", 2: "t", 3: "option3", 4: "o"…}
0: "o"
1: "p"
2: "t"
3: "option3"
4: "o"
5: "n"
6: "2"
我怎样才能设法返回一个正确的值,例如option1,以便我可以有一个默认状态?
https://codesandbox.io/s/little-snowflake-j26b7?file=/src/App.js
import React, { useState } from "react";
export default () => {
const initialList = [
{
id: "1",
name: "John"
},
{
id: "2",
name: "Eric"
},
{
id: "3",
name: "Jonathan"
}
];
const handleChangeSelected = (e, id) => {
setSelected({
...Selected,
[id]: e.target.value
});
};
const [list, setList] = useState(initialList);
const [Selected, setSelected] = useState("option2");
console.log(Selected);
return (
<div>
<ul>
<div>
{list.map((item) => (
<li key={item.id}>
<div>
<div className="users">{item.name}</div>
<p />{" "}
<input
type="radio"
id={item.id}
name={item.id}
value="option1"
checked={Selected[item.id] === "option1"}
onChange={(e) => handleChangeSelected(e, item.id)}
/>
<label for="huey">Option 1</label>
</div>
<div>
<input
type="radio"
id={item.id}
name={item.id}
value="option2"
checked={Selected[item.id] === "option2"}
onChange={(e) => handleChangeSelected(e, item.id)}
/>
<label for="dewey">Option 2</label>
</div>
<div>
<input
type="radio"
id={item.id}
name={item.id}
value="option3"
checked={Selected[item.id] === "option3"}
onChange={(e) => handleChangeSelected(e, item.id)}
/>
<label for="louie">Option 3</label>
</div>
<br />
</li>
))}
</div>
</ul>
</div>
);
};
【问题讨论】:
-
有趣的是,“option2”为我正确打印出来了。也许尝试重新访问该链接?
-
@Ibz 尝试在列表中选择一个选项并查看控制台。
标签: javascript reactjs