React Native-返回上一页时如何刷新FlatList?

时间:2018-10-27 16:06:33

标签: javascript android react-native

我将尝试解释我的情况:

我有2个页面/屏幕

SreenA.js:

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

ScreenB.js:

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

我想实现的目标:

  

当我在screenB中按返回按钮时,我的应用程序将返回到screenA。   当我回到screenA时,我需要刷新FlatList。 (每   我回到屏幕A的时间。

我如何在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});
  }

1 个答案:

答案 0 :(得分:2)

添加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>
    );
  }
}

有关完整示例,请在手机上查看以下snack。每次您导航回到第1页时,时间戳都会更新,但在应用恢复时不会更新。

您应该可以从此示例中对其进行扩展。