React 3 - setState()

  • React 通过管理 state 来实现组件管理
  • 更新 state 使用 this.setState() 来实现
  • this.setState() 被调用, React 会重新调用 render 方法来渲染 UI.

如果父组件调用了 this.setState(), 不管子组件有没有使用父组件 state 中的对象,子组件都会因为父组件的重新 render() 而再次执行各自的 render() 方法。子函数组件也会被重新执行。

  • state 是可变的,是组件内部维护一组用户反映组件 UI 变化的状态集合。
  • Props 对于使用它的组件来说,是只读的。修改 Props 值,只能在父组件中进行。
  • this.setState() 是异步操作,并不会立刻执行

例如上图,两次 console 输出是一样的

可通过回调函数绕过这个问题

  • this.setState() 两种格式

    • 第一个参数是一个对象

    • 第一个参数是一个函数

上面两种写法的效果是一样的,都可以在 this.setState()的第二个参数加上回调函数

  • 总结
  • 每个组件都可以有自己的 state, state 必须要先定义,才能使用。修改 state 必须要通过 this.setState() 来实现

  • this.setState() 第一个参数必须是或返回的是一个 json. json 的 field 是我们希望要修改的 state key, json 的 value 是state key 的新值

  • 如果state 包含多个json key, this.setState() 可以只修改其中一个或者多个 key 对应的 value.

  • Json 典型操作

向现有数据追加数据

删除数组中指定数据

更新 state 中对象。注意,这里加了中括号,用的是变量 name 的值为名的 state 对象

原文地址:https://www.cnblogs.com/crdanding/p/12113132.html

时间: 2024-08-04 01:22:51

React 3 - setState()的相关文章

React中setState同步更新策略

本文和大家分享的主要是React中setState同步更新相关内容,希望对大家学习React有所帮助. 为了提高性能React将setState设置为批次更新,即是异步操作函数,并不能以顺序控制流的方式设置某些事件,我们也不能依赖于 this.state 来计算未来状态.典型的譬如我们希望在从服务端抓取数据并且渲染到界面之后,再隐藏加载进度条或者外部加载提示: componentDidMount() { fetch('https://example.com') .then((res) => re

React的setState分析

前端框架层出不穷,不过万变不离其宗,就是从MVC过渡到MVVM.从数据映射到DOM,angular中用的是watcher对象,vue是观察者模式,react就是state了. React通过管理状态实现对组件的管理,通过this.state()方法更新state.当this.setState()被调用的时候,React会重新调用render方法来重新渲染UI. 本文针对React的SetState的源码来进行解读,根据陈屹老师的<深入React技术栈>加上自己的理解. 1. setState异

React中setState 什么时候是同步的,什么时候是异步的?

class Example extends React.Component { constructor() { super(); this.state = { val: 0 }; } componentDidMount() { this.setState({val: this.state.val + 1}); console.log(this.state.val); // 第 1 次 log this.setState({val: this.state.val + 1}); console.lo

[React] Call setState with null to Avoid Triggering an Update in React 16

Sometimes it’s desired to decide within an updater function if an update to re-render should be triggered. Calling .setState with null no longer triggers an update in React 16. This means we can decided if the state gets updated within our .setState 

[React] Understanding setState in componentDidMount to Measure Elements Without Transient UI State

In this lesson we'll explore using setState to synchronously update in componentDidMount. This allows for us to use getBoundingClientRect or other synchronous UI calls and make changes to the UI without a transient UI state. componentDidMount() is in

React的setState执行机制

1. setState基本特点 1. setState是同步执行的 setState是同步执行的,但是state并不一定会同步更新 2. setState在React生命周期和合成事件中批量覆盖执行 在React的生命周期钩子和合成事件中,多次执行setState,会批量执行 具体表现为,多次同步执行的setState只有最后一次起作用,前面的全被覆盖 当遇到多个setState调用时候,会提取单次传递setState的对象,把他们合并在一起形成一个新的单一对象,并用这个单一的对象去做setSt

React 的setState 理解

我们都知道在React中,setState() 方法是用来改变组件状态的,在项目中也一直用,也没有出现什么问题(使用方法太简单了),但今天看了一篇文章,提到了setState 使用时的两个注意点,加深了对setState()的认识. setState() 最简单的使用方式,就是给它传递一个对象,对象中的属性就是我们要改变的状态,对象中只写我们要改变的那些状态就可以了,react 会把我们这次所做的改变和原来没有做改变的状态进行合并,形成最新的状态,重新渲染组件.写一个简单的例子,点击按钮显示点击

【React 6/100】 React原理 | setState | JSX语法转换 | 组件更新机制

****关键字 | setState | JSX语法转换 | 组件更新机制 组件更新机制 setState() 的两个作用 修改state 更新组件 过程:父组件重新渲染时,也会重新渲染子组件,但只会渲染当前组件子树(当前组件以其所有子组件) 组件性能优化 减轻state 减轻state:只存储跟组件渲染相关的数据(比如:count/ 列表数据 /loading等) 注意:不用做渲染的数据不要放在state中 对于这种需要在多个方法中用到的数据,应该放到this中 避免不必要的重新渲染 组件更新

React中setState注意事项

setState是一个异步函数,异步获取数据 学习react在使用ref和setState操作DOM时会遇到的问题: ref获取ul结点元素 错误写法:得到的ul长度总是上一次输入后的长度 结果: 正确写法:setState异步函数第二个回调函数在第一个参数执行完成后执行 结果: 原文地址:https://www.cnblogs.com/nayek/p/12361525.html