React Native RefreshControl 未在 iOS 上触发 onRefresh

Posted

技术标签:

【中文标题】React Native RefreshControl 未在 iOS 上触发 onRefresh【英文标题】:React Native RefreshControl not triggering onRefresh on iOS 【发布时间】:2018-12-18 13:14:40 【问题描述】:

我的PersonScreen 有以下(简化的)设置,导航到AppointmentScreen

class PersonScreen 
  state = 
    refreshing: false,
  ;

  _onRefresh = () => 
    this.setState( refreshing: true );
    this._fetchStuff()
      .then(() => 
        this.setState( refreshing: false );
      ;
  ;

  render() 
    return (
      <View style=CONTAINER>
        <ScrollView
          keyboardShouldPersistTaps="handled"
          refreshControl=<RefreshControl refreshing=refreshing onRefresh=this._onRefresh />
          <ListItem
            key=ITEM.id
            title=moment(DATETIME).format(FORMAT))
            onPress=() => 
              navigation.navigate('AppointmentScreen', 
                appointment: ITEM,
                refreshParent: this._onRefresh,
              );
            
          />
        </ScrollView>
      </View>
    );
  

AppointmentScreen 上,您做出一些选择,然后返回执行以下操作:

const  refreshParent  = navigation.state.params;
refreshParent();
navigation.goBack();

这不起作用的唯一情况是在 ios 上。只要我去PersonScreen 并刷新它就可以工作。但是,如果我从PersonScreen 转到AppointmentScreen 并返回它确实会触发refreshParent(本质上是_onRefresh),但是任何下拉以触发RefreshControls onRefresh 函数的尝试都会失败.我还在_onRefresh 中添加了一些console.log,但它甚至没有输出任何内容。

如果我的AppointmentScreen 看起来像这样:

const  refreshParent  = navigation.state.params;
//refreshParent();
navigation.goBack();

一切正常。所以我遇到了以某种方式调用refreshParent 然后返回使RefreshControl 中的_onRefreshPersonScreen 中的以下_onRefresh 不起作用。

有没有人知道为什么会这样?如前所述,我只在 iOS 上体验过这一点,但在 iOS 模拟器和设备上始终如此。

【问题讨论】:

【参考方案1】:

你能创建一个博览会版本吗?

另外,你的刷新是refreshing=refreshing应该是refreshing=this.state.refreshing

【讨论】:

谢谢。我将研究创建一个 Expo 版本。但它实际上并不是用 Expo 构建的。 你试过了吗?改变刷新?

以上是关于React Native RefreshControl 未在 iOS 上触发 onRefresh的主要内容,如果未能解决你的问题,请参考以下文章

react native 增加react-native-camera

更新 react-native-maps 以使用 create-react-native-app

react native 增加react-native-storage

React-Native 和 Expo:create-react-native-app 和 react-native init 之间的区别

什么是 react-native-cli 和 @react-native-community/cli?

React Native - 当 react-native 版本 > 0.55 时,无法通过 react-native-cli 创建新项目