首页 > 解决方案 > 无法从回调 RefreshControl 启动刷新操作

问题描述

我正在使用 RefreshControl 在按下按钮后开始刷新屏幕,代码如下。但是,即使设置了刷新变量的状态,刷新也不会开始。

const [refresh, setRefresh] = useState(false);
    ....

<ScrollView 
  style={styles.container} 
  refreshControl={
    <RefreshControl refreshing={refresh} />
  }
>
  ....
  <TouchableOpacity
    onPress={() => {
      setRefresh(true);
      if (modal) {
        modal.close();
      }
    }}
  >
    ...
  </TouchableOpacity>
</ScrollView>

我可以从 API 回调启动刷新操作,但按钮回调也不起作用。不确定这里需要什么。

标签: javascriptreact-native

解决方案


作为文档:

注意:刷新是一个受控属性,这就是为什么它需要在 onRefresh 函数中设置为 true 否则刷新指示器将立即停止。

因此,您必须refresh在方法中设置为 true onRefresh()

const onRefresh = React.useCallback(() => {
    setRefresh(true);

    // your api call
    setRefresh(false);
}, [refreshing]);

推荐阅读