React Native Navigator didfocus事件监听器

时间:2017-01-13 19:32:20

标签: android ios react-native react-redux

我在使用本机导航器时遇到了一个非常奇怪的问题。

我有一个ScrollableTabView有多个导航器,在特定导航器的某些场景中,我想要隐藏底部导航。

我尝试使用导航器的onFocus事件来获取当前场景详细信息,原来它已被弃用(虽然它在xCode和Android模拟器上工作正常,但在我发布应用时它不起作用。 )

我的第二次尝试是将didfocus事件监听器附加到父堆栈componentDidMount上,如下所示:

this.refs.stackNavigator.navigationContext.addListener('didfocus',(event) => { // Some code here calling an action });

但是也没有工作,因为我发现有人说要在渲染导航器之前附加监听器并建议将监听器附加到导航器的renderScene功能。 (另外,一切在模拟器上都能正常工作,但在发布的应用上却没有。)

我的第三次尝试是使用renderScene方法实际执行此操作,并且结果与上述两次尝试相同,所有这些都适用于模拟器,但在发布时,没有任何作用。 (另外,一切在模拟器上都能正常工作,但在发布的应用上却没有。)

任何帮助或如果有人遇到此类行为,我将非常感谢他的反馈。

感谢社区!

1 个答案:

答案 0 :(得分:0)

您使用的是react-native-scrollable-tab-view吗?你可以使用onChangeTab:

<ScrollableTabView onChangeTab={this.onChangeTab} />

我很确定你可以设置这样的方法:

onChangeTab({i, ref, from }) {
  this.children[i].onFocus();
}

您必须使用ref={(ref) => (this.children[i] = ref)}设置每个标签,其中i是标签的索引。现在,您可以在选项卡中创建一个onFocus()方法,并在选择该选项卡时调用它。