一个对象有一个引用一个或多个学校对象user
的数组道具。schools
我想使用<List>
with<CheckBox>
来改变schools
数组。
我将user
对象加载到视图中,然后加载listOfSchools
(从应用程序状态)以生成复选框列表:
<List data={listOfSchools} keyExtractor={ item=> item._id } renderItem={({item})=>renderItem(item)} />
renderItem
功能:
const renderItem = (school) => {
return <ListItem
title={school.name}
accessory={()=>renderAccessory(school)}
/>
};
renderAccessory
功能:
const renderAccessory = (school) => {
return <CheckBox checked={() => checkSchool(school._id)} onChange={()=>changeSchool(school._id)} />
}
如果在数组中引用 ,该checkSchool
函数将返回布尔值。该函数从数组中添加或删除。school._id
user.schools
changeSchool
school._id
users.schools
changeSchool
功能:
const changeSchool = (schoolId) => {
let checked = checkSchool(schoolId);
if (!checked) {
// add schoolId to user.schools
} else {
// remove schoolId from user.schools
}
}
这根本行不通。看来,无论我用什么来改变状态,复选框都不会更新,user.schools
数组也不会改变。
构建这样一个设计目标的正确方法是什么?