Как получить данные в компоненте, который использует StackNavigator в реагировать родной?

Вот что я пытаюсь сделать для iOS-приложения, использующего реагирующее -

  1. Я использую StackNavigator
  2. На главном экране я показываю все элементы в списке, который get/fetch от AysncStorage, Это сделано в componentDidMount(), Это отлично работает.
  3. Я иду на следующий экран (используя StackNavigator), чтобы добавить новый элемент в список в AsyncStorage. Товар добавлен.
  4. Когда я возвращаюсь на домашний экран с помощью кнопки назад, обновленный список не отображается. Так же componentDidMount() не называется.

Как решить эту проблему?

1 ответ

Решение

Redux - лучший вариант, но грязный обходной путь заключается в следующем:

Домашний экран

state = { items: [] }

addItemFromChild = (item) => {
   this.setState((prevState) => ({ items: [...prevState.items, item] }))
}

goToAddItemScreen = () => {
   this.props.navigation.dispatch(NavigationActions.navigate({ routeName: "AddItemScreen", params: { addItemFromChild: this.addItemFromChild } }))
}

AddItemScreen

addItem = (item) => {
   this.props.navigation.state.params.addItemFromChild(item)
}
Другие вопросы по тегам