提问人:jSvSL 提问时间:11/16/2023 最后编辑:Brian Tompsett - 汤莱恩jSvSL 更新时间:11/17/2023 访问量:40
创建一个复选框,其中包含连接到 API 的布尔值
Creating a check box with boolean value connected to API
问:
我有一个 react 应用程序从作为对象数组的 API 中提取数据。 其中一个值是一个布尔值,我正在创建一个复选框,单击该复选框时,它会将布尔值从 true 更改为 false。
API 数据示例:
[{created: "Nov 10"}, { created_by: "Tim"}, {is_active: true}]
[{created: "Nov 15"}, { created_by: "Bill"}, {is_active: false}]
我创建了一个表来映射数据。下面是示例:
const [checkedItems, setCheckedItems] = useState([])
const [data, setData] = useState([]);
{data.map((group, i) => (
<tr key={i}>
<td> {data.created}</td>
<td> {data.created_by}</td>
<td> <checkbox value={data.is_active}
checked={checkedItem}
onChange={(e) => handleCheckboxChange(e.target.checked, i)}
/></td>
<tr>
)}
我设置了我的 并传递了 和 ,但不确定在单击复选框时更改 true / false 值的逻辑。
这就是我想要改变状态的想法,但 react 无法识别从 API 数据访问的布尔值。我不认为逻辑是正确的。handleCheckboxChange
e
checked
i
is_active
const handleCheckboxChange = (e, checked, i) => {
let newChecked = checkedItems.map((x) => x);
newChecked ? setCheckedItems(false) : setCheckedItems(true);
setCheckedItems(newChecked)
}
如何使用 react 设置从 API 中提取的布尔值的状态?
答:
0赞
Sakib Rahman
11/16/2023
#1
下面是更正后的映射函数:
const [checkedItems, setCheckedItems] = useState([])
const [data, setData] = useState([]);
{data.map((item, i) => (
<tr key={i}>
<td>{item.created}</td>
<td>{item.created_by}</td>
<td>
<checkbox
value={item.is_active}
checked={checkedItems[i] || false}
onChange={(e) => handleCheckboxChange(e.target.checked, i)}
/>
</td>
</tr>
))}
以下是根据复选框更改更新状态的逻辑:
const handleCheckboxChange = (checked, i) => {
setCheckedItems((prevCheckedItems) => {
const newCheckedItems = [...prevCheckedItems];
newCheckedItems[i] = checked;
return newCheckedItems;
});
};
评论