我一直在尝试将回调传递到屏幕。
以下是我的实验摘录...
export default class Test extends React.Component {
constructor(props) {
super(props);
};
handleOnPress(data){
//How do we pass this callback to "Home" or "Sub"?
}
render() {
const Navigator = StackNavigator({
Home: {screen: Home},
Sub: {screen: Sub}
});
let data = {blah:"blah blah"};
return (<Navigator screenProps={data} />);
}
}
在此示例中,我可以在this.props.screenProps.blah
和Home
中获得Sub
。
我认为能够通过道具意味着能够通过回叫,但我觉得我不对。
有没有人遇到过这个问题?
任何建议都将受到赞赏。
答案 0 :(得分:2)
不建议通过 react native 导航参数传递回调,这可能会导致状态冻结(无法正确更新)。此处更好的解决方案是使用 EventEmitter,因此回调保留在 Screen1 中,并在 Screen2 发出事件时调用。
屏幕 1 代码:
$ awk 'BEGIN{FS=OFS=RS;RS=""} {$NF=""}1' file
0
1
00:00:01,830 --> 00:00:04,740
corresponding text
2
00:00:05,280 --> 00:00:10,280
corresponding text
3
00:00:10,740 --> 00:00:14,640
corresponding text
4
00:00:15,510 --> 00:00:19,260
corresponding text
屏幕 2 代码:
import DeviceEventEmitter from "react-native"
DeviceEventEmitter.addListener("event.testEvent", (eventData) =>
callbackYouWantedToPass(eventData)));