我有以下标签导航结构:
tab1:声音播放器屏幕(您可以在其中播放声音),
tab2:信息屏幕,
TAB3:设置屏幕,
我希望声音播放器停止播放(类具有stop()方法),当我从Sound Player选项卡切换到Info或设置选项卡时。我尝试使用Tabbaronpress,但我真的不明白如何从那里调用停止方法。我尝试了这样的东西:
static navigationOptions = {
tabBarOnPress: ({previousScene,scene,jumpToIndex}) => {
previousScene.stop();
jumpToIndex(scene.index);
}
}
这很难使用react-navigation
实现,因为事实证明,知道哪个屏幕当前具有库的当前状态非常棘手(请参阅此处的长期问题)。<<<<<<<<<<<</p>
一种解决方案是使用以React-Navigation-ICE-ICE-IS-HOC,将您的屏幕组件包装在可以检查的道具中提供布尔值。鉴于此,您可以将类似以下内容放在tab1
的componentWillUpdate
中:
componentWillUpdate (nextProps) {
if (!nextProps.isFocused) {
// component is going out of focus, stop the music
this.stop()
}
}
注意:我建议使用我链接的库版本,它是帕特里克·沃兹尼亚克(Patrick Wozniak)的叉子,它更加最新。