假设我有两个屏幕:
我最初登陆屏幕A 。当我点击Button
时,我导航到屏幕B 。当我按Back Button
时,我再次导航到屏幕A 。
当我导航到屏幕A 时,我想调用一个动作创建者,如上面的场景所述。
我只想知道每次出现屏幕时都会调用哪个生命周期事件。
是否有某些事件,例如componentWillAppear()
?
注意:我正在使用react-native
与react-navigation
进行导航。
答案 0 :(得分:7)
现在可以通过听众进行简单的反应导航来实现:
在组件A中:
componentDidMount = () => {
this._componentFocused();
this._sub = this.props.navigation.addListener(
'didFocus',
this._componentFocused
);
}
componentWillUnmount() {
this._sub.remove();
}
_componentFocused = () => {
this.setState({dataToShow});
}
答案 1 :(得分:1)
如果您使用react-native-navigation,则可以侦听外观事件:https://wix.github.io/react-native-navigation/#/screen-api?id=listen-to-visibility-events-globally
答案 2 :(得分:0)
当您从一个屏幕导航到另一个屏幕时,第一个屏幕将不会被卸载,但仍然在堆栈中,只需隐藏在后台。
您需要的内容可能是class Foo
def initialize(a)
@a = a
end
def apply?(examples)
foo_1 { examples }
end
private
def foo_1
v = foo_2 { yield.size }
v ? 1 : 2
end
def foo_2
yield > @a
end
end
,但目前设计中尚未提供,请参阅react-native open issue #51。
您可以尝试这种替代方式:react-navigation-addons。有了这个,你可以举办活动componentDidFocus
& focus
可能符合您的需求。