#arrays #reactjs #react-native
#массивы #reactjs #react-native
Вопрос:
У меня есть два экрана, экран A и экран B. На каком экране B есть состояние, которое необходимо передать на экран A, и я добился этого, используя react navigation, отправив параметры через навигацию. Проблема в том, что мне нужно вызвать метод на экране A при нажатии кнопки на экране B (при нажатии кнопки она переходит на экран A), и вместе с завершением навигации мне нужно вызвать метод для выполнения setState.
Как этого добиться?
Мой метод:
handler(){
this.setState({ visible: !this.state.visible })
}
Поэтому, когда пользователь нажимает на кнопку («Применить») на экране B, кнопка вызывает навигацию. Итак, как вызвать handler(), когда пользователь нажимает на кнопку на экране B?
Комментарии:
1. Вероятно, есть несколько способов сделать это, и трудно помочь без полного кода с обоих экранов здесь. Вы полностью закрываете экран A при переходе на экран B или используете навигатор стека, где экран A остается в памяти?
2. Используя стек, где он остается в памяти!
Ответ №1:
Я считаю, что лучший подход с использованием параметров навигации — это поставить условие в componentDidMount экрана, вызывающего ваш обработчик(), если вы обнаружите, что параметр, который вы отправили из screenB, существует. Что-то вроде этого (не уверен в точном написании):
screenB
this.props.navigation.navigate('screenA', { paramFromB: 'param passed from Screen B'}
screenA
componentDidMout(){
if(this.props.navigation.state.params.paramFromB){
this.handler()
}
}
поэтому каждый раз, когда вы вводите на экране A, он проверяет, существует ли параметр с экрана B, а затем вызывает ваш обработчик
Комментарии:
1. componentDidMout не будет отображаться каждый раз, когда мы возвращаемся к экрану!
2. @hellodevs вы переопределяете свою кнопку возврата? Вы можете переопределить его и вместо использования navigation.navigate использовать navigation.push, чтобы вернуться к экрану A. Использование push позволяет нам выразить намерение добавить другой маршрут независимо от существующей истории навигации.
3. reactnavigation.org/docs/navigating/#going-back более подробная информация здесь, в разделе Переход к маршруту несколько раз