使用通过函数中的反应导航传递的参数

时间:2018-01-01 02:19:16

标签: javascript react-native react-navigation

问题

我试图使用我传递的参数,并在函数内部进行反应导航。我定义了这样的参数:

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>

1 个答案:

答案 0 :(得分:0)

paramsrender()中声明。如果要在其他函数中使用值,可以使用this.props.navigation.state

注意:当您想设置多个州值时,您可以通过一次调用this.setState()来完成所有操作:

this.setState({
    passKey: params.postKey,
    passUserID: params.userID,
    passContent: params.postContent,
    firebaseItems:'',
    fontLoaded:true
});