Обновить данные при переходе назад React Native

Как мне обновить свои данные при возвращении? Например, если я хочу что-то отредактировать, а затем нажимаю «стрелку назад», я хочу сразу увидеть изменения.

    componentWillMount() {
    getData("data", (res) => {
        this.setState({ name: res.name, date: res.date});
        var date = new moment(this.state.date);
        var currentDate = new moment(); 
        var duration = moment.duration(date.diff(currentDate)).as("days");
        duration = Math.round(duration + 1).toString();
        var daysLeftPercent = Math.round([duration / 340] * 100);
        this.setState({ daysLeft: duration, daysLeftPercent: daysLeftPercent});

    }); 
}

Вроде этого, но я также хочу запускать его при нажатии «стрелки назад» на другой странице, которая ведет к этому.

вот как вы можете получить доступ к функции экрана A при переходе назад с экрана B stackoverflow.com/a/52732960/7462666 вы можете просто вызвать обновление при переходе назад

Haider Ali 17.10.2018 22:44

Прочтите документ: reactjs.org/docs/react-component.html. Вы можете использовать shouldComponentUpdate(nextProps, nextState) или static getDerivedStateFromProps(props, state)

Hoàng Vũ Anh 18.10.2018 05:00
Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
1
2
889
3

Ответы 3

Если вы хотите получить доступ к методу компонента из другого компонента, вы должны привязать его (может быть в пределах props или параметров навигации). И для доступа к «стрелке назад» (я думаю, вы имеете в виду кнопку «Назад» на устройстве, иначе все зависит от вас), вы можете использовать BackHandler из react native.

  BackHandler.addEventListener(
    "hardwareBackPress",
    this.props.onPressBackButton
  );
  ...
  onPressBackButton = () => {
    //do something
  }

Если вы хотите вернуться к предыдущему компоненту и передать данные предыдущему компоненту, вы можете использовать () => this.props.navigation.goBack ()

Например, если вы хотите нажать кнопку, чтобы вернуться:

<TouchableHighlight onPress = {() => this.props.navigation.goBack(
  //do something here

  )}>    
  <Text> Go Back to previous component </Text>
</TouchableHighlight>

Могу ли я добавить это к кнопке в верхнем левом углу (в заголовке) вместо того, чтобы создавать новую?

Olle Thunberg 20.10.2018 12:24

Если вы используете navigationOptions для перехода между компонентами, по умолчанию в левой части заголовка компонента будет кнопка «Назад».

Perry 23.10.2018 00:31

@perry Итак, как установить обратный вызов goBack для кнопки «Назад» по умолчанию (если мы не используем настраиваемый левый заголовок)?

Jeaf Gilbert 01.01.2019 09:05

Как обновить экран при переходе обратно в React Native ----

React.useEffect (() => {const unsubscribe = navigation.addListener ('focus', () => {Alert.alert ('Refreshed');}); return unsubscribe;}, [навигация]);

используйте это в useefect и перед рендерингом / возвратом

Я думаю, они просят обновить данные, а не обновлять всю страницу.

GAntoine 02.07.2021 15:25

Другие вопросы по теме