react中监听props的改变方式

 更新时间:2024年01月24日 14:48:51   作者:土豆Coder  
这篇文章主要介绍了react中监听props的改变方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

react监听props的改变

componentWillReveiceProps

之前使用componentWillReveiceProps来实现组件更新阶段的通信

class xxx extends Component {
	/** 省略无关代码 **/
	componentWillReceiveProps (nextProps) {
    if (nextProps.sth !== this.props.sth) {
      // sth值发生改变下一步工作
    }
  }
}

此时React13.16.0已经被改成了UNSAFE_componentWillReceiveProps

从名字也能看出来官方是不建议使用这个钩子的,但是你非要用,所以就给你个大写的前缀告诉你这个钩子是UNSAFE不安全的。

UNSAFE_componentWillReceiveProps

使用方法和componentWillReveiceProps一样,只是官方给加了个前缀告诉你尽量不要用。

至于为何被抛弃了呢,是因为

Note that if a parent component causes your component to re-render, this method will be called even if props have not changed. Make sure to compare the current and next values if you only want to handle changes.

只要父组件引起了你的组件的 重新render,你的组件就会触发componentWillReceiveProps方法,即使你组件接收的props没有发生任何变化

像我这样,如果官方不建议用,那我肯定是要寻找它的替换方法了

既然官方取消了一个方法,自然会给出一个更推荐的方法。

getDerivedStateFromProps

// 当props发生变化后将值赋给当前组件的state变量
static getDerivedStateFromProps (nextProps, prevState) {
  return {
    curSth: nextProps.sth
  }
}

这里的curSth是定义在子组件内state上的变量,sth是通过在父组件中给子组件传进来的值,而return以后就会将父组件传进来的值赋值给子组件对应的变量上,也就是此时props已经改变了

如果此时进行下一步操作如果做呢?

componentDidUpdate () {
	// 当curSth被sth重新赋值后就可以在这里进行props被改变后的操作了
}

具体的实践案例在之前的一个文章中也有应用到,echarts折线图作为一个组件,当传入的值发生改变后来渲染echarts的绘制

→_→react中使用echarts,并实现tooltip循环轮播

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • react实现一个优雅的图片占位模块组件详解

    react实现一个优雅的图片占位模块组件详解

    这篇文章主要给大家介绍了关于react如何实现一个还算优雅的占位模块图片组件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-10-10
  • React 组件中实现事件代理

    React 组件中实现事件代理

    React的事件系统和浏览器事件系统相比,主要增加了两个特性:事件代理、和事件自动绑定,本文主要介绍了React 组件中实现事件代理,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • react搭建在线编辑html的站点通过引入grapes实现在线拖拉拽编辑html

    react搭建在线编辑html的站点通过引入grapes实现在线拖拉拽编辑html

    Grapes插件是一种用于Web开发的开源工具,可以帮助用户快速创建动态和交互式的网页元素,它还支持多语言和多浏览器,适合开发响应式网页和移动应用程序,这篇文章主要介绍了react搭建在线编辑html的站点通过引入grapes实现在线拖拉拽编辑html,需要的朋友可以参考下
    2023-08-08
  • React中进行条件渲染的实现方法

    React中进行条件渲染的实现方法

    React是一种流行的JavaScript库,它被广泛应用于构建Web应用程序,在React中,条件渲染是一个非常重要的概念,它允许我们根据不同的条件来呈现不同的内容,在本文中,我们将探讨React如何进行条件渲染,需要的朋友可以参考下
    2023-11-11
  • ReactNative短信验证码倒计时控件的实现代码

    ReactNative短信验证码倒计时控件的实现代码

    本篇文章主要介绍了ReactNative短信验证码倒计时控件的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • React18新增特性released的使用

    React18新增特性released的使用

    本文主要介绍了React18新增特性released的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • React前端渲染优化--父组件导致子组件重复渲染的问题

    React前端渲染优化--父组件导致子组件重复渲染的问题

    本篇文章是针对父组件导致子组件重复渲染的优化方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • 取消正在运行的Promise技巧详解

    取消正在运行的Promise技巧详解

    这篇文章主要为大家介绍了取消正在运行的Promise技巧详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 详解webpack + react + react-router 如何实现懒加载

    详解webpack + react + react-router 如何实现懒加载

    这篇文章主要介绍了详解webpack + react + react-router 如何实现懒加载,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-11-11
  • react无限滚动组件的实现示例

    react无限滚动组件的实现示例

    本文主要介绍了react无限滚动组件的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05

最新评论