Javascript 两次调用Find函数将undefined作为输出
下面的代码第一次运行正常,它会找到正确的项并更改其选中值,但是如果我再次使用相同的id调用相同的函数,它将返回undefined。知道为什么吗 此代码在React本机应用程序中使用,其中复选框使用此方法更新 复选框:Javascript 两次调用Find函数将undefined作为输出,javascript,reactjs,react-native,Javascript,Reactjs,React Native,下面的代码第一次运行正常,它会找到正确的项并更改其选中值,但是如果我再次使用相同的id调用相同的函数,它将返回undefined。知道为什么吗 此代码在React本机应用程序中使用,其中复选框使用此方法更新 复选框: <CheckBox value={item.checked} key={item.id} onValueChange={setSelection} onChange={()=> { handleChange(item.id); }} style={styles.chec
<CheckBox value={item.checked} key={item.id} onValueChange={setSelection} onChange={()=> {
handleChange(item.id);
}}
style={styles.checkbox}
tintColors={{ true: "#ffc324", false: "#ffc324" }}
/>
const handleChange = (id) => {
const ids = id;
let changedCheckbox = categories.find((category) => {
return category.subcategory.find((item) => {
if (item.id === ids) {
return (item.checked = !item.checked);
}
});
});
console.log(changedCheckbox);
};
切换选中,然后返回布尔值不选中
更改此语句
返回(item.checked=!item.checked)代码>捷虹:无变化:(@BinuMathew好的。我会再试一次。@BinuMathew什么意思item.checked=!item.checked
?你想检查一下吗?@BinuMathew不要更改find
回调中的值。我会编辑我的答案。@BinuMathew请阅读我当前的答案。它仍然显示未定义。你能检查一下这把小提琴吗,它似乎对我有用.
[
{
"id": 1,
"name": "MOTs",
"filename": "1610270182.png",
"bg_filename": null,
"content": "You can try this set a state like this and check if your component mounted or not. This way you are sure that if your component is unmounted you are not trying to fetch something.",
"featured": 1,
"created_at": "2021-01-10T09:16:22.000000Z",
"updated_at": "2021-01-10T09:40:37.000000Z",
"subcategory": [
{
"id": 1,
"name": "MOT1",
"category_id": 1,
"image_name": null,
"created_at": null,
"updated_at": null,
"checked": false
},
{
"id": 2,
"name": "MOT2",
"category_id": 1,
"image_name": null,
"created_at": null,
"updated_at": null,
"checked": false
},
{
"id": 3,
"name": "MOT3",
"category_id": 1,
"image_name": "1611678308.png",
"created_at": "2021-01-26T16:25:11.000000Z",
"updated_at": "2021-01-26T16:31:24.000000Z",
"checked": false
}
]
}
]
const handleChange = (id) => {
const category = categories.find(category => {
const item = category.subcategory.find(item => item.id === id);
if (item) item.checked = ! item.checked;
return !!item;
});
console.log(category)
};