我试图使用我传递的参数,并在函数内部进行反应导航。我定义了这样的参数:
render() {
const { params } = this.props.navigation.state;
return (
每当我尝试在函数中使用参数时,例如params.userID
我就会收到错误消息,"无法找到变量参数"。当我尝试使用
this.setState({passUserID: this.props.navigation.state.userID})
只返回null。我会将参数传递给函数,但我从其他函数中调用函数。我一直在使用的不切实际的解决方案是让用户按下一个按钮,该按钮定义了一系列包含所有参数的状态:
<Button
onPress={() =>{
this.setState({passKey: params.postKey})
this.setState({passUserID: params.userID})
this.setState({passContent: params.postContent})
this.setState({firebaseItems:''});
this.setState({fontLoaded:true});
}}
title="Press to load"
color="#ff0037"
/>
但这对用户来说是不切实际的,因为每次他们想要加载这个屏幕时,他们都必须按一个按钮。
那么如何在函数内部使用参数,或者我可以尝试其他解决方案呢?
代码
class Feed extends React.Component {
//...
//Where I send the parameters and navigate to the other screen
<TouchableWithoutFeedback onPress={() => {
this.props.navigation.navigate(
'CommentScreen',{postKey: item.key, postContent: item.content, passNameID: item.nameID, userID: item.userID}
)
}}>
//...
</TouchableWithoutFeedback>
//...
And then later:
class Comments extends React.Component {
//...
render() {
//where I receive the parameters
const { params } = this.props.navigation.state;
return (
//...
//How I use parameters
<Text>
{params && params.postContent}
</Text>
答案 0 :(得分:0)
params
在render()
中声明。如果要在其他函数中使用值,可以使用this.props.navigation.state
。
注意:当您想设置多个州值时,您可以通过一次调用this.setState()
来完成所有操作:
this.setState({
passKey: params.postKey,
passUserID: params.userID,
passContent: params.postContent,
firebaseItems:'',
fontLoaded:true
});