我正在将访问令牌作为道具传递给功能组件。访问令牌发生更改时,我需要功能组件重新渲染。当所述访问令牌发生更改时,我正在使用useEffect来setState。它没有按预期重新渲染。
const Panel = (props) => {
const [accessToken, setAccessToken] = useState('');
useEffect(() => {
setAccessToken(props.accessToken)
}, [props.accessToken])
return (...)
}
预期:在props.accessToken更改后面板会重新呈现。
实际:面板不会使用更新的props.accessToken值重新呈现。
答案 0 :(得分:2)
根据您的评论,
accessToken值是通过api调用在父组件中定义的,该调用将令牌值设置为“ this.accessToken = response.data”。然后,<Panel accessToken={this.accessToken} />
在您的情况下,this.accessToken
不会根据本地实例变量重新呈现组件。
您实际上需要将令牌设置为状态,然后将其传递给子组件。
this.setState({accessToken : response.data})
然后从状态传递它,
<Panel accessToken={this.state.accessToken} />