Я пытаюсь использовать ListView данных @shoutem/ui ListView, которые я получаю через API, ответ представляет собой объект массива! Внутри 1 объекта есть 1 ключевое значение, такое как статус с параметрами (следовать/не следовать)! Если параметры следуют, я отображаю строку с полной звездой или нет, я определяю с пустой звездой. Но теперь я хочу щелкнуть одну строку! Я хочу изменить пустую звезду на полную звезду или наоборот и в то же время сохранить идентификатор строки в один список массивов! Так кто-нибудь может дать мне решение? Большое спасибо за Вашу помощь! И хорошего дня Вот моя картинка: введите здесь описание изображения
Как я могу обновить 1 строку представления списка @Shoutem/ui реагировать на родной
Ответы (1)
Вы должны обрабатывать этот внутренний компонент, который вы визуализируете как строку. Допустим, вы визуализируете свою строку следующим образом:
renderRow(object) {
const iconName = object.status === 'follow' ? 'add-to-favorites-full' : 'add-to-favorites';
return (
<Row>
<Image
styleName="small rounded-corners"
source={{ uri: object.imageUrl }}
/>
<View styleName="vertical stretch space-between">
<Subtitle>object.name</Subtitle>
<Caption>object.status</Caption>
</View>
<Button styleName="right-icon" onPress={() => this.updateObjectStatus(object)}><Icon name={iconName} /></Button>
</Row>
);
}
затем, если ваш объект необходимо обновить на сервере, вам нужно будет опубликовать это в своем API внутри вашей функции updateObjectStatus и обновить данные с сервера. Если вы обновляете статус объекта локально в состоянии приложения с помощью избыточного действия. Оба случая вызовут изменение ваших данных и, следовательно, новый рендеринг вашего ListView. который теперь будет отображать строку, на которую вы нажали, с полной звездой.
Вам может помочь этот экран: https://github.com/shoutem/extensions/blob/master/shoutem-books/app/screens/BooksListScreen.js
он обрабатывает это внутри этих двух компонентов:
- Компонент строки списка: https://github.com/shoutem/extensions/blob/master/shoutem-books/app/components/ListBooksView.js
- Кнопка избранного: https://github.com/shoutem/extensions/blob/master/shoutem-books/app/components/Favorite.js