无法将登录身份验证令牌作为参数传递

时间:2019-07-15 08:52:43

标签: javascript react-native authentication react-navigation

我以某种状态存储了登录身份验证令牌,并将其作为参数传递给导航的另一个屏幕。但是接收该令牌作为参数的屏幕在console.log()上显示“ undefined”。我不想每次在每个屏幕上都从异步存储中获取令牌,而是想使用参数传递方法。

主要组件,它从父类接收令牌作为道具,并通过导航将其发送到另一个子屏幕。

class DropdownSales extends Component {
constructor(props) 
    {
        super(props)

        this.state = {
            id: this.props.auth,
            TotalSales: [],
            data_default:{},
        }

    }

componentDidMount(){   
        this.fetch_default();
    }

setPickerValue = (newValue) => 
    {

        this.props.navigation.navigate('OemLevelTwo', {value: newValue}, {auth_token: this.state.id});
        this.setState({
          pickerSelection: newValue,
        });


        this.togglePicker();
        ...........
        ...........

    }
}

这是需要使用令牌参数的组件。

export default class OemLevelTwo extends Component {
 constructor(props) {
        super(props)

        this.state = {
            id: '',
            param_oem: '',
       }
   }


async componentDidMount(){
        const param_oem = this.props.navigation.getParam('value');
        const auth_id = this.props.navigation.getParam('auth_token');


        await this.setState({
            param_oem,
            id: auth_id
        });
        console.log(this.state.id, 'in oem level two')
        this.fetch_oem();
    }


fetch_oem = () => {
        var headers = {
            'Content-Type': 'application/json',
            'Access-Control-Allow-Headers': 'x-access-token',
            'x-access-token': this.state.id
        }
      .............
      .............
   }
}

当我从'OemLevelTwo'进行控制台时,它会输出undefined作为输出。 请帮助解决。

1 个答案:

答案 0 :(得分:3)

.navigate()的第二个参数可用于传递参数。在您的情况下,您正在传递{value: newValue}作为第二个参数,而{auth_token: this.state.id}作为第三个参数。

因此将您的行更改为:

this.props.navigation.navigate('OemLevelTwo', {value: newValue, auth_token: this.state.id}); 

现在您应该可以使用getParam('auth_token');