IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> js框架----react.js 8 React新版生命周期 -> 正文阅读

[JavaScript知识库]js框架----react.js 8 React新版生命周期


react文档-CDN链接
下载,访问地址,Ctrl+s保存

16 vs 17

  1. 废弃三个回调函数
    componentWillMount
    componentWillUpdate
    componentWillReceiveProps
    新版本加UNSAFE_前缀,并非指安全性
  2. 新版增加两个
    getDerivedStateFromProps
    getSnapshotBeforeUpdate
    很少使用
    在这里插入图片描述

getDerivedStateFromProps

从props获取派生的state对象

//声明
static getDerivedStateFromProps(props,state){
	console.log("xxxxx")
	return null/state_obj
}
//返回的状态对象,会替代原来的state,且无法更改

使用场景:
state完全取决于props时,可以使用

getSnapshotBeforeUpdate

获取快照,介于render/componentDidUpdate之间

容器中的内容,无法全部显示,使用滚动条
container.scrollTop; 内容上边界,向上滚动的像素
可读,可写的属性
container.scrollHeight; 内容上边界,到最下边界的高度
只读的属性
container.onscroll = function(){} 滚动事件
在控制台,可以操作当前页面中的元素
如btn.click(); input_e.value; div.scollTop

获取快照案例

创建一个容器,循环放入新闻,一旦手动滚动,就定格在当前位置

<script type="text/babel">
        class News extends React.Component{

            state = {
                newsArr:[],
            }

            // 挂载完成,开启定时器
            componentDidMount(){
                this.timer = setInterval(()=>{
                    let {newsArr} = this.state
                    // newsArr.push("新闻" + (newsArr.length+1))  滚动条可以停留
                    newsArr.unshift("新闻" + (newsArr.length+1))  //滚动条不可以停留
                    this.setState({newsArr})
                },200)
            }

            //在17版本中使用
            getSnapshotBeforeUpdate(){
                //返回数据
                return this.refs.list.scrollHeight

                //数据传给componentDidUpdate
            }

            componentDidUpdate(preprops,prestate,preheight){
                console.log("完成更新")
                console.log("更新之前的数据",preprops,prestate)

                //内容上移
                this.refs.list.scrollTop += this.refs.list.scrollHeight - preheight
            }

            componentWillUnmount(){
                clearInterval(this.timer)
            }

            render(){

                return (
                    <div ref="list" style={{width:"200px",height:"200px",backgroundColor:"lightblue",overflow:"scroll"}}>
                        {this.state.newsArr.map((e,idx)=>{
                            return <div key={idx}>{e}</div>
                        })}
                    </div>
                )
            }
        }

        // render Component
        ReactDOM.render(<News />,document.getElementById("newsList"))
    </script>

?
?
?
?
上一篇:js框架----react.js 7 React生命周期????下一篇:

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章           查看所有文章
加:2021-10-06 12:08:27  更:2021-10-06 12:11:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 23:10:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码