【发布时间】:2021-04-11 14:08:38
【问题描述】:
我有一个简单的列表,其中每个li 都有可供选择的无线电输入。
每当我选择一个选项时,所有其他元素中的所有输入都会使用相同的选项进行更新。
我添加了一个独特的 id 和一个独特的 name,正如 React 文档 中提到的那样,以重新组合每个组并将其分开,但它不起作用。
我希望能够分别选择列表中的每个元素。怎么做?
https://codesandbox.io/s/affectionate-sun-i2khx?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 = (event) => {
setSelected(event.target.value);
console.log(event);
};
const [list, setList] = useState(initialList);
const [Selected, setSelected] = useState("option1");
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 === "option1"}
onChange={handleChangeSelected}
/>
<label for="huey">Option 1</label>
</div>
<div>
<input
type="radio"
id={item.id}
name={item.id}
value="option2"
checked={Selected === "option2"}
onChange={handleChangeSelected}
/>
<label for="dewey">Option 2</label>
</div>
<div>
<input
type="radio"
id={item.id}
name={item.id}
value="option3"
checked={Selected === "option3"}
onChange={handleChangeSelected}
/>
<label for="louie">Option 3</label>
</div>
<br />
</li>
))}
</div>
</ul>
</div>
);
};
https://codesandbox.io/s/affectionate-sun-i2khx?file=/src/App.js
到目前为止,我尝试了什么但无法将输入定位到相应的id
function handleSelected(e, id) {
setSelected({
...Selected,
[id]: Selected[id]
});
}
【问题讨论】:
-
你能把
selected放到列表数组的每个对象中吗? -
@DEEPAK 你是什么意思? You can check my code here here
-
我检查了这就是为什么我问为什么不在数组的每个对象中放置一个选定的键!
-
like { id: "1", name: "John", selected: "option1" }, { id: "2", name: "Eric", selected: "option2" }, { id:“3”,名称:“Jonathan”,选择:“option1”}
-
如果你用这种方式处理会很容易
标签: javascript reactjs