前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >React---新扩展setState和lazyLoad

React---新扩展setState和lazyLoad

作者头像
半指温柔乐
发布于 2021-05-10 02:43:54
发布于 2021-05-10 02:43:54
51400
代码可运行
举报
文章被收录于专栏:前端知识分享前端知识分享
运行总次数:0
代码可运行

一、setState

1. setState更新状态的2种写法

(1). setState(stateChange, [callback])------对象式的setState

1.stateChange为状态改变对象(该对象可以体现出状态的更改)

2.callback是可选的回调函数, 它在状态更新完毕、界面也更新后(render调用后)才被调用

(2). setState(updater, [callback])------函数式的setState

1.updater为返回stateChange对象的函数。

2.updater可以接收到stateprops

4.callback是可选的回调函数, 它在状态更新、界面也更新后(render调用后)才被调用。

总结:

1.对象式的setState是函数式的setState的简写方式(语法糖)

2.使用原则:

(1).如果新状态不依赖于原状态 ===> 使用对象方式

(2).如果新状态依赖于原状态 ===> 使用函数方式

(3).如果需要在setState()执行后获取最新的状态数据,

要在第二个callback函数中读取

2.代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 import React, { Component } from 'react'
 2 
 3 export default class Demo extends Component {
 4 
 5     state = {count:0}
 6 
 7     add = ()=>{
 8         //对象式的setState
 9         /* //1.获取原来的count值
10         const {count} = this.state
11         //2.更新状态
12         this.setState({count:count+1},()=>{
13             console.log(this.state.count);
14         })
15         //console.log('12行的输出',this.state.count); //0 */
16 
17         //函数式的setState
18         this.setState( state => ({count:state.count+1}))
19     }
20 
21     render() {
22         return (
23             <div>
24                 <h1>当前求和为:{this.state.count}</h1>
25                 <button onClick={this.add}>点我+1</button>
26             </div>
27         )
28     }
29 }

二、lazyLoad

1. 路由组件的lazyLoad

//1.通过React的lazy函数配合import()函数动态加载路由组件 ===> 路由组件代码会被分开打包

const Login = lazy(()=>import('@/pages/Login'))

//2.通过<Suspense>指定在加载得到路由打包文件前显示一个自定义loading界面

<Suspense fallback={<h1>loading.....</h1>}>

<Switch>

<Route path="/xxx" component={Xxxx}/>

<Redirect to="/login"/>

</Switch>

</Suspense>

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-05-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
React 入门学习(十七)-- React 扩展
学到这里 React 已经学的差不多了,接下来就学习一些 React 扩展内容,可以帮助我们更好的开发和理解,这部分的知识还有很多的东西可以探寻,比如:网红 React-Hook,就是我们需要注意的地方,打了 100 多集的类式组件,出来一个 hooks ,现在用函数式组件偏多了…
小丞同学
2021/10/13
7270
07-React Hooks(路由组件懒加载, Context上下文, 组件优化...)
Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。
彼岸舞
2022/08/24
1.4K0
从 0 到 1 实现 React 系列 —— 4.setState优化和ref的实现
看源码一个痛处是会陷进理不顺主干的困局中,本系列文章在实现一个 (x)react 的同时理顺 React 框架的主干内容(JSX/虚拟DOM/组件/生命周期/diff算法/setState/ref/...)
牧云云
2018/08/14
8410
从 0 到 1 实现 React 系列 —— 4.setState优化和ref的实现
聊聊React类组件中的setState()的同步异步(附面试题)
当我们依次按下1、2、3按钮,我们会发现1按钮的事件监听函数运行时是先运行 console.log('test1 setState()之后', this.state.count)这句代码然后在进行的render(),而在代码中 this.setState(state => ({count: state.count + 1}))这句是在前的,由此我们可以推测setState()是异步的 ,同理2,3按钮也是。 值得一提的是,按钮3中 this.setState(state => ({count: state.count + 1}), () => { // 在状态更新且界面更新之后回调 console.log('test3 setState callback()', this.state.count) }) 中有一个回调函数,在我们一般情况下是用其简写形式(对象形式),只有在需要setState()后获取最新的状态数据时才会用到函数形式的setState()。
henu_Newxc03
2022/05/05
1.7K0
聊聊React类组件中的setState()的同步异步(附面试题)
深入理解 React setState
React 修改 state 方法有两种: 1、构造函数里修改 state ,只需要直接操作 this.state 即可, 如果在构造函数里执行了异步操作,就需要调用 setState 来触发重新渲染。 2、在其余的地方需要改变 state 的时候只能使用 setState,这样 React 才会触发 UI 更新,如果在其余地方直接修改 state 中的值,会报错:
Leophen
2021/07/08
1.1K0
React 新特性讲解及实例(一)
定义:Context 提供了一种方式,能够让数据在组件树中传递而不必一级一级手动传递。
前端小智@大迁世界
2019/07/02
7830
React 新特性讲解及实例(一)
前端面试之React
React就是Facebook的一个开源JS框架,专注的层面为View层,不包括数据访问层或者那种Hash路由(不过React 有插件支持),与Angularjs,Emberjs等大而全的框架不同,React专注的中心是Component,即组件。React认为一切页面元 素都可以抽象成组件,比如一个表单,或者表单中的某一项。
CODER-V
2023/03/04
2.6K0
前端面试之React
一天梳理完React所有面试考察知识点
在shouldComponentUpdate()判断中,有一个有意思的问题,解释为什么 React setState() 要用不可变值
beifeng1996
2022/10/06
2.8K0
从零实现一个React(四):异步的setState
在上一篇文章中,我们实现了diff算法,性能有非常大的改进。但是文章末尾也指出了一个问题:按照目前的实现,每次调用setState都会触发更新,如果组件内执行这样一段代码:
前端迷
2019/08/27
8630
从零实现一个React(四):异步的setState
深入React技术栈之setState详解
抛出问题 class Example extends Component { contructor () { super() this.state = { value: 0, index: 0 } } componentDidMount () { this.setState({value: this.state.value + 1}) console.log(this.state.value) // 第一次输出 this.
keyWords
2018/09/19
7980
深入React技术栈之setState详解
react16常见api以及原理剖析
React 与 Vue 有很多相似之处,React 和 Vue 都是非常优秀的框架,它们之间的相似之处多过不同之处,并且它们大部分最棒的功能是相通的:如他们都是 JavaScript 的 UI 框架,专注于创造前端的富应用。不同于早期的 JavaScript 框架“功能齐全”,Reat 与 Vue 只有框架的骨架,其他的功能如路由、状态管理等是框架分离的组件。
前端迷
2019/09/25
1K0
react16常见api以及原理剖析
React中的setState的同步异步与合并(2)
this.setState会通过引发一次组件的更新过程来引发重新绘制。也就是说setState的调用会引起React的更新生命周期的四个函数的依次调用:
Qwe7
2022/06/09
7020
React: States is tricky
类似于 Android 的生命周期调节参数,此外 state 必须在定义它的那个 class 里面使用。
szhshp
2022/09/21
4420
React中的setState的同步异步与合并
原理可以用这张图来描述,即在react中,setState通过一个队列机制实现state的更新。当执行setState时,会把需要更新的state合并后放入状态队列,而不会立刻更新this.state,当进入组件可更新状态时,这个队列机制就会高效的批量的更新state。
Qwe7
2022/06/09
1.6K0
[第10期] 了解 React setState 运行机制
使用React 的时候, 难免要用到setState , 有一些基础还是需要了解一下。
皮小蛋
2020/03/02
1.2K0
React 从入门到入土(二)--组件三大属性
这时候会发现页面内容不会改变,原因是 React 中不建议 state不允许直接修改,而是通过类的原型对象上的方法 setState()
小丞同学
2021/08/16
9220
setState 到底是同步的,还是异步的
这是一道变体繁多的面试题,在 BAT 等一线大厂的面试中考察频率非常高。首先题目会给出一个这样的 App 组件,在它的内部会有如下代码所示的几个不同的 setState 操作:
coder_koala
2021/07/08
7880
setState 到底是同步的,还是异步的
React-Hook最佳实践
Hooks 是 React 16.8 新增的特性,它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性,无需转化成类组件
xiaofeng123aa
2022/10/17
4K0
React---新扩展Hooks和Fragment
  (1). State Hook让函数组件也可以有state状态, 并进行状态数据的读写操作
半指温柔乐
2021/05/13
8980
React教程(详细版)
好了,接下来我们要做改变状态这件事了,我们要通过react中的内置API(setState方法),不能直接更改state,就像下面这样。
全栈程序员站长
2022/09/13
1.9K0
React教程(详细版)
相关推荐
React 入门学习(十七)-- React 扩展
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档