编程语言
首页 > 编程语言> > javascript – 将道具从孩子传递到父母反应导航

javascript – 将道具从孩子传递到父母反应导航

作者:互联网

我正在使用react-navigation.我将反应原生组件的道具传递给反击导航模式,反应导航在水龙头上打开.

export default class SomeComp extends Component {
...

render() {
    const { navigate } = this.props;
    return (
        <TouchableOpacity
        onPress={navigate("Modal", {data: ..., ...})}
        ..../>
       )
    }
}

在模态中我访问goBack()函数,它关闭模态,以及通过SomeComp传递的props

export default class Modal extends Component {
...

render() {
    const { data, ... } = this.props.navigation.state.params;
    const { goBack } = this.props.navigation;
    return (
        <View>
            <TouchableOpacity
            onPress={goBack()}
            ..../>
            <Text>
               {data, ...}
            </Text>
        </View>
       )
    }
}

我不知道的是,是否有可能不使用redux将道具从Modal传递给SomeComp.
在一个“普通的”react-native父子组件中,我会用一个简单的回调来做.但是,这在这里不起作用,因为模态在路由器中定义,因此完全独立于SomeComp.它只从那里打电话……

解决方法:

在goBack()上传递道具到父组件的确有一个简单的解决方案.

你可以在调用goBack()之前将一个额外的prop包含函数传递给Modal,或者在componentWillUnmount中调用该函数.

export default class SomeComp extends Component {
...

onGoBack = (someDataFromModal) => {
  console.log(someDataFromModal);
}

render() {
    const { navigate } = this.props;
    return (
        <TouchableOpacity
        onPress={navigate("Modal", {data: ..., ..., onGoBack: this.onGoBack})}
        ..../>
       )
    }
}
export default class Modal extends Component {
...

componentWillUnmount() {
  if(this.props.navigation.state.params.onGoBack) {
    this.props.navigation.state.params.onGoBack('I fired from Modal!');
  } 
}

render() {
    const { data, ... } = this.props.navigation.state.params;
    const { goBack } = this.props.navigation;
    return (
        <View>
            <TouchableOpacity
            onPress={goBack()}
            ..../>
            <Text>
               {data, ...}
            </Text>
        </View>
       )
    }
}

标签:javascript,react-native,router,react-navigation
来源: https://codeday.me/bug/20190608/1195889.html