一个对象有一个引用一个或多个学校对象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._iduser.schoolschangeSchoolschool._idusers.schools
changeSchool功能:
const changeSchool = (schoolId) => {
let checked = checkSchool(schoolId);
if (!checked) {
// add schoolId to user.schools
} else {
// remove schoolId from user.schools
}
}
这根本行不通。看来,无论我用什么来改变状态,复选框都不会更新,user.schools数组也不会改变。
构建这样一个设计目标的正确方法是什么?