Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 等待componentDidMount中的redux道具_Reactjs_Redux_Jwt - Fatal编程技术网

Reactjs 等待componentDidMount中的redux道具

Reactjs 等待componentDidMount中的redux道具,reactjs,redux,jwt,Reactjs,Redux,Jwt,我想从componentDidMount中的API端点加载一些东西,但需要将redux存储中的其他东西传递给它 问题是,似乎componentDidMount在从redux填充道具之前被触发,所以jwt auth令牌还没有处于redux状态,我得到了一个401错误 我如何让代码等待加载redux状态,然后调用函数,或者让它每隔500毫秒循环一次,直到确定props 如果除了componentDidMount之外还有其他地方,我应该把它放在这里,我愿意接受建议。您可以等待auth令牌获得值。 例如

我想从
componentDidMount
中的API端点加载一些东西,但需要将redux存储中的其他东西传递给它

问题是,似乎componentDidMount在从redux填充道具之前被触发,所以jwt auth令牌还没有处于redux状态,我得到了一个401错误

我如何让代码等待加载redux状态,然后调用函数,或者让它每隔500毫秒循环一次,直到确定props


如果除了
componentDidMount
之外还有其他地方,我应该把它放在这里,我愿意接受建议。

您可以等待auth令牌获得值。 例如,您可以显示进度指示器,直到它得到一个值。如果它接收到一个值,则使用componentDidMount显示您的组件

render() {
   const {authToken} = this.props;
   return (
     <div> 
       {!authToken && ProgressIndicator}
       {authToken && ComponentWithApiFetch}
     </div> 
   )
}
render(){
const{authToken}=this.props;
返回(
{!authToken&&ProgressIndicator}
{authToken&&ComponentWithApiFetch}
)
}

您使用
组件将接收道具
生命周期方法来跟踪传入道具

componentWillReceiveProps(nextProps){
 if(this.props.auth.token !== nextProps.auth.token){
   //make a api call here
 }
}

因此,最初令牌将是未定义的,因此您可以使用componentDidMount检查令牌是否未定义并进行api调用。componentDidMount(){如果(this.props.auth!=未定义)this.props.getDetails()}不建议在componentWillReceiveProps中获取数据的可能重复项。事实上,不再建议使用此生命周期方法。如果不推荐使用componentWillReceiveProps,请参阅: