【发布时间】:2020-10-20 19:52:49
【问题描述】:
我有一个复选框列表。
即使value 已更改,复选框也不会显示为选中状态。
下面是我的代码:-
import React, { useState } from "react";
import { render } from "react-dom";
const CheckboxComponent = () => {
const [checkedList, setCheckedList] = useState([
{ id: 1, label: "First", isCheck: false },
{ id: 2, label: "Second", isCheck: true }
]);
const handleCheck = (e, index) => {
checkedList[index]["isCheck"] = e.target.checked;
setCheckedList(checkedList);
console.log(checkedList);
};
return (
<div className="container">
{checkedList.map((c, index) => (
<div>
<input
id={c.id}
type="checkbox"
checked={c.isCheck}
onChange={e => handleCheck(e, index)}
/>
<label htmlFor={c.id}>{c.label}</label>
</div>
))}
</div>
);
};
render(<CheckboxComponent />, document.getElementById("root"));
我在循环外的一个简单复选框上工作得很好。 我不确定问题出在哪里。
这是链接 - https://codesandbox.io/s/react-multiple-checkboxes-sczhy?file=/src/index.js:0-848
【问题讨论】:
-
你的
checklist状态没有改变,所以在这种情况下 react 不会重新渲染 -
我正在做 setCheckedList(checkedList)。为什么它没有反映我的更改?
-
对那个数组的引用还是一样的,唯一改变的是它的属性