我正在尝试使用我传递的参数,并在函数内部进行反应导航。我定义这样的参数:
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>
params
在render()
宣布。如果要在另一个函数中使用值,可以使用this.props.navigation.state
。
注意:当您想要设置多个状态值时,您可以在一次调用this.setState()
时完成所有操作:
this.setState({
passKey: params.postKey,
passUserID: params.userID,
passContent: params.postContent,
firebaseItems:'',
fontLoaded:true
});