获得徽章 0
- react生命周期执行顺序【旧】:
创建: constructor ---> componentWillMount ---> render ---> componentDidMount
更新: shouldComponentUpdate ---> componentWillUpdate ---> render ---> componentDidUpdate
其中shouldComponentUpdate是状态更新的开关,如果shouldComponentUpdate返回false,则后面的流程都不执行;
如果调用this.forceUpdate(),则不管shouldComponentUpdate返回值是什么,都继续执行后面的流程;
react生命周期主要分为三个阶段:初始化、更新、卸载:
1、初始化阶段: 由ReactDOM.render()触发 --- 初次渲染
1.1 constructor()
1.2 componentWillMount()
1.3 render()
1.4 componentDidMount() ====> 常用,一般做一些初始化的事,比如开启定时器、发送网络请求、订阅消息
2、更新阶段: 由组件内部this.setState或父组件render触发
2.1 shouldComponentUpdate()
2.2 componentWillUpdate()
2.3 render() -----> 必须使用
2.4 componentDidUpdate()
3、卸载组件: 由ReactDOM.unmountComponentAtNode()触发
1.1 componentWillUnmount() ====> 常用,一般做一些收尾的事,比如关闭定时器、取消订阅消息展开等人赞过评论4 - 高阶函数:
如果一个函数符合下面两个规范中的任何一个,那么该函数就是高阶函数:
1、若A函数接收的参数是一个函数,那么A就是高阶函数;
2、若A函数调用的返回值依然是一个函数,那么A也是高阶函数;
常见的高阶函数有:Promise,setTimeout,arr.map()等
函数柯里化:
通过函数调用,继续返回函数的方式,实现多次接收参数最后统一处理的函数编码形式展开等人赞过29 - 关于虚拟DOM:
1、本质是Object类型的对象(一般对象)
2、虚拟DOM比较“轻”,真实DOM比较“重”,因为虚拟DOM是React内部在用,无需真实DOM那么多的属性
3、虚拟DOM最终会被React转化为真实DOM呈现在页面上等人赞过评论5 - react受控组件与非受控组件的区别:
非受控组件:页面中输入类的dom,需要使用的时候直接通过ref获取节点使用;
受控组件:页面中输入类的dom随着输入将内容维护到state里面去,用到的时候从state里面取;
推荐使用受控组件等人赞过评论6
![[调皮]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_13.aaa8265.png)
![[弱]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_109.7854933.png)
![[吐]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_19.249e025.png)