代码之家  ›  专栏  ›  技术社区  ›  Yuxiao Ma

如何在React Native中的当前屏幕上显示时主动刷新平面列表?

  •  2
  • Yuxiao Ma  · 技术社区  · 7 年前

    我正在使用 <FlatList> 堆栈导航器 用于屏幕之间的导航。 现在我试着让 <平面列表> 每当用户导航回主屏幕时,从后端重新提取数据并重新发送。

    <平面列表> 应该从后端引用并重新加载以显示最新数据。(将最近的频道重新排序到顶部等)

    现在实现了pull to refresh,但问题是如何知道用户已导航回主屏幕,以及如何主动调用refresh < 当这种情况发生时。

      onRefresh = async () => {
        const { data } = this.props
        try {
          this.setState({ refreshing: true })
          await data.refetch({ page: 1 })
        } catch (e) {
          // todo
        } finally {
          this.setState({
            refreshing: false,
          })
        }
      }
    
    const NudgeList = ({
      nudges,
      loading,
      refreshing,
      onRefresh,
    }) => {
      let inner
      if (loading && !refreshing && !fetchingMore) {
        inner = (
          <View style={styles.center}>
            <ActivityIndicator animating />
          </View>
        )
      } else {
        inner = (
          <FlatList
            onRefresh={onRefresh}
            refreshing={refreshing || false}
            scrollEventThrottle={400}
            data={nudges}
            renderItem={({ item }) => (
              <NudgeCard nudge={item} {...{ onOpenNudge }} />
            )}
          />
        )
      }
    
      return (
        <View style={styles.container}>
          {inner}
        </View>
      )
    }
    1 回复  |  直到 7 年前
        1
  •  0
  •   Khalil Khalaf    7 年前

    当导航到ChatDetails屏幕时,可以将回调作为导航参数传递:

    this.props.navigation.navigate(
      'ChatDetails', 
      {
        onGoBack: () => console.log('Will go back from ChatDetails'),
      }
    );
    

    因此 console.log() ,做你的 fetch() 或者/或者你想要的任何东西。