【问题标题】:How do I refresh the page with an onPress in ReactNative如何在 React Native 中使用 onPress 刷新页面
【发布时间】:2021-09-24 11:48:20
【问题描述】:

我是 ReactNative 的新手,遇到了关于页面刷新的问题。我的屏幕中有一些过滤器,并且希望在按下任何这些过滤器后刷新页面,但我无法找到有关如何执行此操作的任何指南。我无休止地搜索,但只找到了许多关于下拉刷新的指南,我觉得解决方案与 React.useEffect 有关系,但我不熟悉。

我的代码的重要部分如下:

触发刷新的TouchableOpacity组件:

                        <TouchableOpacity
                            style={styles.filterButton}
                            onPress={() => {
                                sortByRating()
                            }}
                        >

其中 sortByRating() 是一个函数,用于根据我的eateriesToShow 数组的评分对其进行排序。

我想在过滤器上刷新的 FlatList:

                <FlatList
                    data={eateriesToShow}
                    keyExtractor={item => item.id.toString()}
                    renderItem={renderItem}
                    showsVerticalScrollIndicator={true}
                />
            </View>
        )
    }

目前我的 eateriesToShow 数组已排序,但 FlatList 没有刷新。任何帮助将不胜感激。

【问题讨论】:

  • 我不确定你所说的刷新是什么意思,如果你想更新一个 FlatList 那么你必须改变你发送给它的数据。在 React 中,当你更新状态时,组件会重新渲染,所以如果你让 eateriesToShow 成为一个状态并更新它,你的 FlatList 就会更新。如果您仍然卡住,请提供一个沙箱。 codesandbox.io

标签: react-native react-native-flatlist use-effect page-refresh pull-to-refresh


【解决方案1】:

您希望您的平面设计师在数据更改时进行更新。让你的长笛演奏者焕然一新是另一回事。所以我建议你做的是使用 useState 钩子。

 const [yourList, setYourList] = useState<string | null>(null)

像这样(如果您使用 javascript 而不是 typescript,则不需要这些类型)

然后在按评分排序时,您应该执行 setYourList(newEateriesArray)

你的长笛演奏者应该更新了。

【讨论】:

  • 您好,感谢您的回复。我试过了,现在设法让它工作了!!非常感谢您的帮助:)
  • 当然 :) 如果您接受我的回答是正确的,那将不胜感激,哈哈
  • 啊,我明白了,以前不知道。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-19
  • 2021-06-01
  • 1970-01-01
相关资源
最近更新 更多