美文网首页前端
谈谈React--componentWillReceivePro

谈谈React--componentWillReceivePro

作者: 会长__ | 来源:发表于2019-07-22 14:59 被阅读3次

1.什么是componentWillReceiveProps?

这是个神图

image.png

componentWillReceiveProps是React生命周期中的一个环节,有关React的生命周期,同学们可以在这里详细了解。

componentWillReceiveProps在初始化render的时候不会执行,它会在Component接受到新的状态(Props)时被触发,一般用于父组件状态更新时子组件的重新渲染。这个东西十分好用,但是一旦用错也会造成十分严重的后果。

在componentWillReceiveProps这个回调函数中,我们可以获取到就是props,通过this.props来获取,然后新的props则是通过函数的参数传入,在这里我们可以比较两个props从而对本组件的state作出安全的变更然后重新渲染我们的组件或者是触发子组件内的某些方法。

// 这种方式十分适合父子组件的互动,通常是父组件需要通过某些状态控制子组件渲染亦或销毁...

componentWillReceiveProps(nextProps) {//componentWillReceiveProps方法中第一个参数代表即将传入的新的Props
    if (this.props.sharecard_show !== nextProps.sharecard_show){
        //在这里我们仍可以通过this.props来获取旧的外部状态
        //通过新旧状态的对比,来决定是否进行其他方法
        if (nextProps.sharecard_show){
            this.handleGetCard();
        }
    }
}

上面是componentWillReceiveProps常用的方式,但是如果使用不当可能会导致以下后果,一般体现为组件陷入渲染死循环,他会一直接受新的外部状态导致自身一直在重渲染。

componentWillReceiveProps(nextProps) {
    if (this.props.sharecard_show !== nextProps.sharecard_show){
        if (nextProps.sharecard_show){
            this.handleGetCard();
        }
    }
}

handleGetCard() {
    this.props.test()
}

//父组件内

test() {
    this.setState({
        sharecard_show: !this.state.sharecard_show
    })
}

一旦项目中出现这样的代码,有很大几率就会陷入死循环,这两个组件会一直在传递状态并且重新渲染,然后页面估计就卡挂了。这是其中一个需要注意的地方,另外我们需要谨记,在componentWillReceiveProps中想作任何变更最好都将两个状态进行比较,假如状态有异才执行下一步。不然容易造成组件的多次渲染,并且这些渲染都是没有意义的。

2.转载地址

https://juejin.im/post/5a39de3d6fb9a045154405ec

相关文章

  • 谈谈React--componentWillReceivePro

    1.什么是componentWillReceiveProps? 这是个神图 componentWillReceiv...

  • 趁月儿还没升起来

    趁月儿还没升起来 来吧,我们谈谈 谈谈夜的黑和黑的夜吧 来吧,我们谈谈 谈谈逝去的容颜 谈谈老去的爱情 谈谈手指的...

  • 白话诗‖想和人谈谈

    文/王小方 想谈谈关于爱 想谈谈关于恨 想谈谈关于伤感 想谈谈关于死亡 —— 想谈谈目空一切 想谈谈愤世嫉俗 想...

  • 今日份0821

    今日份,舒适。 老朋友相见,分外开心:谈谈工作,谈谈生活,谈谈孩子,谈谈困惑,谈谈近期心得… 前行的路上,有你有我...

  • 谈谈谈谈耳机

    听音乐有两种人。一种在乎音乐本身,认为只要音乐好就能打动人。另一种在乎声音,认为若听不到完美无缺的声音如何能辨别好...

  • 我有个恋爱想和你谈谈

    我有个恋爱想和你谈谈谈谈遇见你以前我生活的快乐与难过我有个恋爱想和你谈谈谈谈遇见你当时我的怦然心动与无措我有个恋爱...

  • 每一个远方 都是逃不掉的苟且

    孤独 看到一个男人深夜三点多在某孤独话题下的评论:想谈谈小说,谈谈诗人,谈谈跑步,谈谈价值观,谈谈夕阳,谈...

  • 谈谈 MVX 中的 Model

    谈谈 MVX 中的 Model 谈谈 MVX 中的 View 谈谈 MVX 中的 Controller 浅谈 MV...

  • 谈谈 MVX 中的 Controller

    谈谈 MVX 中的 Model 谈谈 MVX 中的 View 谈谈 MVX 中的 Controller 浅谈 MV...

  • 浅谈 MVC、MVP 和 MVVM 架构模式

    谈谈 MVX 中的 Model 谈谈 MVX 中的 View 谈谈 MVX 中的 Controller 浅谈 MV...

网友评论

    本文标题:谈谈React--componentWillReceivePro

    本文链接:https://www.haomeiwen.com/subject/sqkwlctx.html