React useEffect不重新渲染功能组件

时间:2019-09-04 00:45:53

标签: reactjs

我正在将访问令牌作为道具传递给功能组件。访问令牌发生更改时,我需要功能组件重新渲染。当所述访问令牌发生更改时,我正在使用useEffect来setState。它没有按预期重新渲染。

const Panel = (props) => {

  const [accessToken, setAccessToken] = useState('');

  useEffect(() => {
    setAccessToken(props.accessToken)
  }, [props.accessToken])

  return (...)
}

预期:在props.accessToken更改后面板会重新呈现。

实际:面板不会使用更新的props.accessToken值重新呈现。

1 个答案:

答案 0 :(得分:2)

根据您的评论,

accessToken值是通过api调用在父组件中定义的,该调用将令牌值设置为“ this.accessToken = response.data”。然后,<Panel accessToken={this.accessToken} />

在您的情况下,this.accessToken不会根据本地实例变量重新呈现组件。

您实际上需要将令牌设置为状态,然后将其传递给子组件。

this.setState({accessToken : response.data})

然后从状态传递它,

<Panel accessToken={this.state.accessToken} />