我以某种状态存储了登录身份验证令牌,并将其作为参数传递给导航的另一个屏幕。但是接收该令牌作为参数的屏幕在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
作为输出。
请帮助解决。
答案 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');