最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

公告

IT圈 admin 30浏览 0评论

公告

公告-窝的迁移

杂七杂八的东西,之前从我开始转前端开始一直写在了博客园(R),因为一些原因,断更了很久,现在打算把细化的各种分类写在这边,原来的还会更,但是不会细分。坚持记录…

也见证一下心无旁骛的一段时间,为接下来的日子,可以搬出去,养只猫,哈哈哈哈嗝儿~

​ (好吧,我是水了一条,啦啦啦啦啦~)

行吧(ノ_ _)ノ

发文助手不让我水(▼ヘ▼#)

重要的公告已经说完了,那接下来谈谈之前碰到的React中操作Dom元素吧

componentDidUpdate()

基于react和antds组件 有这样一个需求 每个月的排班表格中 每一天的格子都可以点进去修改 如果当天的排班被设置成休息 保存成功后 这个格子会变成红色

效果如下

利用react生命钩子来对DOM进行操作


```javascript
const columsDay = {title: n,className: (week === '六' || week === '日') ? 'weekendtable' : '',key: 'date' + n,width: 170,children: [{title: week,dataIndex: n < 10 ? 'date0' + n : 'date' + n,width: 170,key: 'childdate' + n,className: (week === '六' || week === '日') ? 'weekendtable' : 'weeks',render: (text, record, index) => {return (<div style={{ width: '100%', height: '100%' }}className={text.TPROG === 'OFF' ? '**offtable**' : null}onClick={() => {this.toRescind(text, date);}}><div>{text.TPROG}</div><div>{text.TTEXT}</div></div>);},},],}

```javascript
// 操作dom改变班次休息单元格背景色componentDidUpdate() {if (document.getElementsByClassName("offtable")) {const offlength = document.getElementsByClassName("offtable").lengthvar ol = 0while (ol <= offlength) {document.getElementsByClassName("offtable")[ol] ? document.getElementsByClassName("offtable")[ol].parentNode.style.background = "#FFF9F9" : '';ol++}}}

React生命周期

执行时机:组件创建时(页面加载时)

constructor

render

componmentDidMount

钩子函数触发时机作用
constructor创建组件时最先执行初始化state,为事件处理程序绑定this
render每次组件渲染都会触发渲染UI(注意:不能调用setState)
componmentDidMount组件挂载(完成DOM渲染)后发送网络请求,DOM操作

更新时

render (New props 接收到新的参数)(调用setState())(forceUpdate()强制刷新)

componmentDidUpdate

钩子函数触发时机作用
render每次组件渲染都会触发渲染UI(与挂在阶段是同一render)
componentDidUpdate组件更新(完成DOM渲染)后发送网络请求,DOM操作,注意:如果要setState()必须放在一个if条件中

卸载时

执行时机 组件从页面消失

钩子函数触发时机作用
componmentWillUnmount组件卸载从页面中消失执行清理工作比如清理定时器

公告

公告-窝的迁移

杂七杂八的东西,之前从我开始转前端开始一直写在了博客园(R),因为一些原因,断更了很久,现在打算把细化的各种分类写在这边,原来的还会更,但是不会细分。坚持记录…

也见证一下心无旁骛的一段时间,为接下来的日子,可以搬出去,养只猫,哈哈哈哈嗝儿~

​ (好吧,我是水了一条,啦啦啦啦啦~)

行吧(ノ_ _)ノ

发文助手不让我水(▼ヘ▼#)

重要的公告已经说完了,那接下来谈谈之前碰到的React中操作Dom元素吧

componentDidUpdate()

基于react和antds组件 有这样一个需求 每个月的排班表格中 每一天的格子都可以点进去修改 如果当天的排班被设置成休息 保存成功后 这个格子会变成红色

效果如下

利用react生命钩子来对DOM进行操作


```javascript
const columsDay = {title: n,className: (week === '六' || week === '日') ? 'weekendtable' : '',key: 'date' + n,width: 170,children: [{title: week,dataIndex: n < 10 ? 'date0' + n : 'date' + n,width: 170,key: 'childdate' + n,className: (week === '六' || week === '日') ? 'weekendtable' : 'weeks',render: (text, record, index) => {return (<div style={{ width: '100%', height: '100%' }}className={text.TPROG === 'OFF' ? '**offtable**' : null}onClick={() => {this.toRescind(text, date);}}><div>{text.TPROG}</div><div>{text.TTEXT}</div></div>);},},],}

```javascript
// 操作dom改变班次休息单元格背景色componentDidUpdate() {if (document.getElementsByClassName("offtable")) {const offlength = document.getElementsByClassName("offtable").lengthvar ol = 0while (ol <= offlength) {document.getElementsByClassName("offtable")[ol] ? document.getElementsByClassName("offtable")[ol].parentNode.style.background = "#FFF9F9" : '';ol++}}}

React生命周期

执行时机:组件创建时(页面加载时)

constructor

render

componmentDidMount

钩子函数触发时机作用
constructor创建组件时最先执行初始化state,为事件处理程序绑定this
render每次组件渲染都会触发渲染UI(注意:不能调用setState)
componmentDidMount组件挂载(完成DOM渲染)后发送网络请求,DOM操作

更新时

render (New props 接收到新的参数)(调用setState())(forceUpdate()强制刷新)

componmentDidUpdate

钩子函数触发时机作用
render每次组件渲染都会触发渲染UI(与挂在阶段是同一render)
componentDidUpdate组件更新(完成DOM渲染)后发送网络请求,DOM操作,注意:如果要setState()必须放在一个if条件中

卸载时

执行时机 组件从页面消失

钩子函数触发时机作用
componmentWillUnmount组件卸载从页面中消失执行清理工作比如清理定时器
发布评论

评论列表 (0)

  1. 暂无评论