react-navigation:是否可以将回调传递给子节点(例如changeHandler)?

时间:2017-11-27 06:48:19

标签: reactjs react-navigation

我一直在尝试将回调传递到屏幕

以下是我的实验摘录...

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.blahHome中获得Sub。 我认为能够通过道具意味着能够通过回叫,但我觉得我不对。

有没有人遇到过这个问题?

任何建议都将受到赞赏。

1 个答案:

答案 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)));