A user
объект имеет массив prop schools
, который ссылается на один или несколько школьных объектов. Я хотел бы использовать <List>
с <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
не изменяется.
Как правильно структурировать такую цель дизайна?