美文网首页简单易懂的React魔法
简单易懂的React魔法(11):使用setState改变组件状

简单易懂的React魔法(11):使用setState改变组件状

作者: 誅诺 | 来源:发表于2017-08-17 17:32 被阅读26次

和props不同,一个组件的state可以随时被改变,这些状态将保存到组件被销毁。话虽如此,你应该小心地改变组件的状态不然你会遇到问题。
为什么要小心?好吧,你要知道改变一个组件的state或者props会自动调用重新渲染页面,所以新的值会反映在界面中。意味着频繁的更改将使你的代码运行缓慢,这会大大降低用户体验。
React有特殊的更新state方法被称为setState()它将新值合并到现有值中然后触发重新渲染。所以修改我们的buttonClicked()方法使它在修改名字的同时保持国家不变:
src/pages/Detail.js

buttonClicked() {
    const newState = {
        name: chance.first()
    };

    this.setState(newState);
}

注意我已经去掉了对 this.forceUpdate()的调用 – 现在不需要了. 实际上,调用 forceUpdate()只在React没有察觉到一个深度state变化时调用,所以我们现在不需要它了。

新的代码完全实现了我们的想法: 它创建一个新的状态 newState它含有新的姓名, 然后通过调用 this.setState()用来改变组件的state. 因为state的改变自动出发重新渲染, 你会在每次点击按钮时看到一个新的名称,但国家不变。

在极端情况下你设置了太多的state或props变化,不停地调用render()会使页面反应缓慢,react有个解决办法:如果你创建了一个方法shouldUpdateComponent()然后返回false,你的组件就不会被重新渲染。

为了使用这个方法,你要么可以放一些业务逻辑在shouldUpdateComponent()按照你的需要返回true或者false。或者总是返回false然后调用this.forceUpdate()来重新渲染页面。这个方法会强制调用render即使shouldUpdateComponent()返回false。

相关文章

  • 简单易懂的React魔法(11):使用setState改变组件状

    和props不同,一个组件的state可以随时被改变,这些状态将保存到组件被销毁。话虽如此,你应该小心地改变组件的...

  • react问题小结(持续更新中)

    React组件会在什么时候render? state使用setState正确改变; props改变,并且符合sho...

  • setState()状态更新函数

    理解setState的关键 setState不会立刻改变React组件中state的值; setState通过引发...

  • setState

    React文档对于setState的解释和应用setState()会对组件状态的改变进行排列然后噶欧式React该...

  • 2020-03-01

    react setState setState()会对一个组件的state对象安排一次更新;当state改变了,改...

  • react渲染的问题

    react一般就是 通过state和props的改变区引起ui的改变 ,state可以通过setState来改变状...

  • setState的函数用法

    1. this.setState不会立即生效 React中使用this.setState的对象用法时,不会立即改变...

  • react setState({}) setstate((sta

    setState(updater, callback) 是react里的一个常用方法,用来改变组件state来触发...

  • react小知识

    1.React 中render()函数执行的时机:1.组件首次加载 2.setState改变组件内部state 3...

  • 简单易懂的React魔法

    本书通过实战项目来学习React, React Router, Jest, Webpack, ES6等工具。 作者...

网友评论

    本文标题:简单易懂的React魔法(11):使用setState改变组件状

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