[英]Pass props from child to parent react navigation
我正在使用react-navigation
。 我正在将props
从react-native component
传递到react-navigation
的modal
, react-navigation
在水龙头上打开。
export default class SomeComp extends Component {
...
render() {
const { navigate } = this.props;
return (
<TouchableOpacity
onPress={navigate("Modal", {data: ..., ...})}
..../>
)
}
}
在modal
内部,我访问goBack()
函数,该函数关闭modal
以及通过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>
)
}
}
我纳闷的是,无论是其可能的,或者不通过props
下从Modal
到SomeComp
, 而无需使用redux
。 在“正常” react-native parent-child component
我将通过一个简单的callback
来做到这一点。 但是,这在这里不起作用,因为modal
是在router
定义的,因此完全独立于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>
)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.