Как правило, вы не используете ссылки для реакции на обновление содержимого, такого как текст.Контент должен отображаться на основе текущего реквизита и состояния вашего компонента.
В описываемом вами случае вы, вероятно, захотите установить какое-то состояние в родительском компоненте, которое затем повлияет на визуализацию элемента.
В качестве идентификатора sidenote используются ссылки, если вам нужно вызвать метод на дочернем компоненте, например, вызвать focus
на TextInput
, например, но не для обязательного обновления содержимого компонента.
В вашем случаеВы хотите обновить состояние, представляющее текущий активный элемент.Что-то вроде:
import React, {useState} from 'react';
FeedComponent = () => {
const [activeItem, setActiveItem] = useState(null);
<FlatList
data={data}
renderItem={({ item }} => {
return (
<View>
... lots of other stuff here
<TouchableOpacity onPress={() => setActiveItem(item.id)}>
{activeItem === item.id
? <Text>EDITING</Text>
: <Text>EDIT</Text>
}
</TouchableOpacity>
</View>
);
}
extraData={activeItem}
/>