专注网站建设怎么样,洋县住房和城乡建设管理局网站,seo推广培训费用,网站xml地图1. 生命周期
1. 声命周期的三个阶段#xff08;旧#xff09; 初始化阶段#xff1a;由ReactDOM.render()触发—初次渲染
1. constructor()
2. componentWillMount()
3. render()
4. componentDidMount() 常用一般在这个钩子中做一些初始化的事情#xff0c;例如旧 初始化阶段由ReactDOM.render()触发—初次渲染
1. constructor()
2. componentWillMount()
3. render()
4. componentDidMount() 常用一般在这个钩子中做一些初始化的事情例如开启定时器订阅消息发起网络请求更新阶段由组件内部this.setState()或父组件重新render触发
1. shouldComponentUpdate()
2. componentWillUpdate()
3. render() 必须使用的一个
4. componentDidUpdate()卸载组件由ReactDOM.unmountComponentAtNode()触发 1. componentWillUnmount() 常用 一般在这个钩子中做一些收尾的事例如关闭定时器取消订阅消息
2. 声命周期的三个阶段新
新旧生命周期对比 去掉了三个生命周期 componentWillMountcomponentWillReceivePropscomponentWillUpdate 新增两个生命周期getDerivedStateFromProps()getSnapshotBeforeUpdate() 初始化阶段由ReactDOM.render()触发—初次渲染 constructor()getDerivedStateFromProps() 若state的值在任何时候都取决于props那么可以使用 render()componentDidMount() 常用 一般在这个钩子中做一些初始化的事例如开启定时器、发送网络请求、订阅消息 更新阶段由组件内部this.setState()或父组件重新render触发 getDerivedStateFromProps()shouldComponentUpdate()render() 必须使用的一个getSnapshotBeforeUpdate()componentDidUpdate() 卸载组件由ReactDOM.unmountComponentAtNode()触发 1. componentWillUnmount() 常用 一般在这个钩子中做一些收尾的事例如关闭定时器取消订阅消息
2. diffing算法 虚拟DOM中key的作用 简单的说: key是虚拟DOM对象的标识, 在更新显示时key起着极其重要的作用。详细的说: 当状态中的数据发生变化时react会根据【新数据】生成【新的虚拟DOM】随后React进行【新虚拟DOM】与【旧虚拟DOM】的diff比较比较规则如下 旧虚拟DOM中找到了与新虚拟DOM相同的key (1).若虚拟DOM中内容没变, 直接使用之前的真实DOM (2).若虚拟DOM中内容变了, 则生成新的真实DOM随后替换掉页面中之前的真实DOM旧虚拟DOM中未找到与新虚拟DOM相同的key根据数据创建新的真实DOM随后渲染到到页面 用index作为key可能会引发的问题 若对数据进行逆序添加、逆序删除等破坏顺序操作: 会产生没有必要的真实DOM更新 界面效果没问题, 但效率低。如果结构中还包含输入类的DOM 会产生错误DOM更新 界面有问题。注意如果不存在对数据的逆序添加、逆序删除等破坏顺序操作 仅用于渲染列表用于展示使用index作为key是没有问题的。 开发中如何选择key?: 1.最好使用每条数据的唯一标识作为key, 比如id、手机号、身份证号、学号等唯一值。 2.如果确定只是简单的展示数据用index也是可以的。 示例