React Native - Как обновить FlatList при возврате на предыдущую страницу?

1

Я попытаюсь объяснить свое дело:

У меня 2 страницы/экраны

SreenA.js:

...
<FlatList>
</FlatList>
...

ScreenB.js:

...
<Button> This button for back to ScreenA </Button>
...

Чего я хочу достичь:

Когда я нажму кнопку "Назад" в экране "Б", мое приложение вернется к экрану "А". Когда я вернусь к screenA, мне нужно обновить FlatList. (каждый раз, когда я возвращаюсь к screenA).

Как я могу добиться этого в Android Native?

Я добавляю этот раздел, чтобы помочь вам понять, с какими проблемами сталкиваюсь. В Android Native я буду использовать onResume для обновления списка (onResume вызывается каждый раз при вызове экрана/страницы).

То, что я уже пытаюсь, но не работаю для меня сейчас:

Я уже пробовал это, но то, что я получаю, просто вызвал приложение в фоновом режиме, а затем отобразил на переднем плане:

state = {
    appState: AppState.currentState
  }

  componentDidMount() {
    AppState.addEventListener('change', this._handleAppStateChange);
  }

  componentWillUnmount() {
    AppState.removeEventListener('change', this._handleAppStateChange);
  }

  _handleAppStateChange = (nextAppState) => {
    if (this.state.appState.match(/inactive|background/) && nextAppState === 'active') {
      console.log('App has come to the foreground!')
      //i place the code here for refresh the flatList. But not work
    }
    this.setState({appState: nextAppState});
  }
  • 0
    Что вы используете для навигации?
  • 0
    Я использую StackNavigator
Показать ещё 2 комментария
Теги:
react-native

1 ответ

0

Добавьте navigation.addListener чтобы стрелять каждый раз, когда страница получает фокус навигации.

В качестве примера:

class Page1 extends React.Component {
  constructor(props) {
    super(props);
    this.state = { ts: 0 }

    // this will fire every time Page 1 receives navigation focus
    this.props.navigation.addListener('willFocus', () => {
      this.setState({ ts: Date.now() })
    })
  }

  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.paragraph}>
          Page 1 [{this.state.ts}]
        </Text>
        <Button title="Page 2" onPress={() => this.props.navigation.navigate('Page2')}/>
      </View>
    );
  }
}

В качестве примера можно проверить следующие закуски на телефоне. Временная метка будет обновляться при каждом переходе на страницу 1, но не при возобновлении приложения.

В этом примере вы можете расширить его для своих нужд.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню