【发布时间】:2020-09-11 11:02:09
【问题描述】:
我用来允许用户选择主题的@react-native-community/checkbox 只调用一次 onValueChange。所以你可以选中它,但你不能取消选中它。
我通过在每次调用该函数时执行 console.log 来测试这一点,它只打印一次。我还记录了之前和之后的主题状态,它会按预期更改,并且 Checkbox 值道具上使用的选定值也会更新。
我还在不同的屏幕上使用了复选框,它运行良好,所以我认为我没有安装问题。
复选框组件:
<>
<NKCard>
<Text style={styles.heading}>Module 1</Text>
{subjects
.filter(subject => subject.Module === '1')
.map(subject => {
return (
<View key={subject.id} style={styles.subject}>
<Checkbox
disabled={subject.disabled}
value={subject.selected}
onValueChange={() => {
handleSubjectSelect(subject.id);
}}
tintColors={{true: '#36b254', false: '#36b254'}}
/>
<Text style={styles.subjectTitle}>{subject.Title}</Text>
</View>
);
})}
</NKCard>
</>
handleSubjectSelect 函数:
const handleSubjectSelect = id => {
console.log('change');
setSubjects(currentSubjects => {
console.log(currentSubjects);
currentSubjects.forEach(subject => {
if (subject.id === id) {
subject.selected = !subject.selected;
console.log('update');
}
});
console.log(currentSubjects);
return currentSubjects;
});
};
控制台日志:
[Sun May 24 2020 22:31:55.883] LOG change
[Sun May 24 2020 22:31:55.885] LOG [{"Grade": "1", "Module": "1", "Status": "active", "Title": "Math", "disabled": false, "id": "15", "selected":
false}, {"Grade": "1", "Module": "2", "Status": "active", "Title": "Math", "disabled": false, "id": "16", "selected": false}, {"Grade": "1", "Module": "3", "Status": "active", "Title": "Math", "disabled": false, "id": "17", "selected": false}, {"Grade": "1", "Module": "4", "Status": "active", "Title": "Math", "disabled": false, "id": "18", "selected": false}]
[Sun May 24 2020 22:31:55.891] LOG update
[Sun May 24 2020 22:31:55.898] LOG [{"Grade": "1", "Module": "1", "Status": "active", "Title": "Math", "disabled": false, "id": "15", "selected":
true}, {"Grade": "1", "Module": "2", "Status": "active", "Title": "Math", "disabled": false, "id": "16", "selected": false}, {"Grade": "1", "Module": "3", "Status": "active", "Title": "Math", "disabled": false, "id": "17", "selected": false}, {"Grade": "1", "Module": "4", "Status": "active", "Title": "Math", "disabled": false, "id": "18", "selected": false}]
【问题讨论】:
-
欢迎使用 Stackoverflow 多米尼克!请不要使用屏幕截图,您可以复制/粘贴文本格式的代码、日志等吗?更多截图信息,可以阅读this
-
@jmaitrehenry 我已按要求更改了。