gpt4 book ai didi

javascript - 如何在 React 中调用堆栈中的导航事件?

转载 作者:行者123 更新时间:2023-11-29 22:52:16 25 4
gpt4 key购买 nike

当我在我的 StackNavigator 中离开名为 GridVid, 2nd 的屏幕时,我想调用 NavigationEvent 函数 onWillBlur()。

所以在我的 SettingsClass 中,堆栈中的第一个屏幕,这工作正常,我可以调用 onWillBlur(),因为它在 App.js 文件中。

然而,尝试在堆栈的第二个屏幕(称为 GridVid,在 GridVid.js 文件中定义)中调用 onWillBlur() 不起作用。我该如何解决这个问题?

//App.js

class SettingsClass extends Component {

render() {
return (
<View style={styles.settingsContainer}>
<NavigationEvents
onWillBlur={() => {
alert('moving from Settings') //THIS WORKS FINE!!!
}}
/>
</View>
)
}
}


//Tabs across the bottom of the screen
const TabNavigator = createBottomTabNavigator(
{
HomeScreen: {
screen: HomeClass,
},

SettingsStack
},
)

//Settings Class swipes to GridVid
const SettingsStack = createStackNavigator({
SettingsScreen: {
screen: SettingsClass
},
GridVid: {
screen: GridVidClass
}
})

//GridVid.js

export default class GridVidClass extends Component {

render() {
return (
<View style={styles.container}>
<Text>On Grid </Text>

<NavigationEvents
onWillBlur={() => {
alert('moving from GridVid') //THIS DOESN'T WORK...
}}
/>

</View>
);
}
}

最佳答案

尝试使用事件 addListener。它可以解决问题。

例子


constructor(props) {
super(props);
this.willBlur = props.navigation.addListener(
'willBlur',
() => {
alert('moving from GridVid');
}
);
}

componentWillUnmount() {
this.willBlur.remove();

}

然后,使用 push 命令渲染屏幕。

this.props.navigation.push('Gridvid');

关于javascript - 如何在 React 中调用堆栈中的导航事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57260273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com