#reactjs #react-native
Вопрос:
У меня есть экран MyEventsScreen в react native, который извлекает данные с сервера. На другом экране пользователи могут добавлять элементы в базу данных сервера, которые я затем хочу отобразить на экране MyEventsScreen.
Однако у меня проблема в том, что, когда я возвращаюсь на экран MyEventsScreen, я хочу вызвать сервер для автоматического повторного показа страницы. Есть ли способ сделать это?
Вот (упрощенный) код для MyEventsScreen.js:
export default class MyEventsScreen extends Component {
state = {
tickets: [],
};
componentDidMount = () => {
fetch("http://127.0.0.1:8000/api/fullticket/?userID=3", {
method: "GET",
})
.then((response) => response.json())
.then((responseJson) => {
this.setState({
tickets: responseJson,
});
})
.catch((error) => {
console.error(error);
});
};
render() {
return (
<View style={styles.container}>
<FlatList
style={{ flex: 1 }}
data={this.state.tickets}
renderItem={({ item }) => (
<Item item={item}/>
)}
keyExtractor={(item) => item.ticketID}
/>
</View>
);
}
}
Комментарии:
1. Вы должны использовать прослушиватель для запуска вызова обновления, как только ваш компонент будет сфокусирован. Сделай что-нибудь вроде
this.props.navigation.addListener('focus', () => <update here>)
этого . Кстати, вам следует рассмотреть возможность использования компонента функции вместе сuseEffect
крючком вместо компонентов класса.