React Native RefreshControl不会在iOS上触发onRefresh

时间:2018-12-18 13:14:40

标签: ios react-native react-native-navigation uirefreshcontrol

我为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),但是任何拉低触发{ {1}}的{​​{1}}功能失败。我还在RefreshControl中添加了一些onRefresh,但它什至没有输出任何内容。

如果我的console.log看起来像这样:

_onRefresh

一切正常。因此,我遇到了这样的情况:以某种方式调用AppointmentScreen并返回使const { refreshParent } = navigation.state.params; //refreshParent(); navigation.goBack(); refreshParent中的以下_onRefresh无效。

有人知道为什么会这样吗?如前所述,我只在iOS上经历过这种情况,但在iOS模拟器和设备上始终如此。

1 个答案:

答案 0 :(得分:0)

您可以创建展览版本吗?

另外,您的刷新时间为refreshing={refreshing},应该为refreshing={this.state.refreshing}