将componentDidUpdate(prevProps)重写成一个钩子

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将componentDidUpdate(prevProps)重写成一个钩子相关的知识,希望对你有一定的参考价值。

我想把这个生命周期的metod重写成一个钩子:

componentDidUpdate(prevProps) {
  if (this.props.lng !== prevProps.lng && this.props.lat !== prevProps.lat) {
    this.map.setView(new L.LatLng(this.props.lat, this.props.lng), 6);
  } else if (this.props.mapTheme !== prevProps.mapTheme) {
    this.setMapTheme(this.props.mapTheme);
  }
}

我知道使用useEffect钩子但找不到一个好的例子。

答案
useEffect(() => {
  this.map.setView(new L.LatLng(this.props.lat, this.props.lng), 6);
}, [this.props.lng, this.props.lat]);

useEffect(() => {
  this.setMapTheme(this.props.mapTheme);
}, [this.props.mapTheme]);

以上是关于将componentDidUpdate(prevProps)重写成一个钩子的主要内容,如果未能解决你的问题,请参考以下文章

在 componentDidUpdate 中无法访问的状态

componentDidUpdate 中的 prevState 是 currentState?

mapStateToProps,但未调用componentDidUpdate

componentDidUpdate 没有触发

如何处理 ComponentDidUpdate 中的异步数据?

与 setState 回调相比,使用 componentDidUpdate 有啥优势?