React - shouldComponentUpdate细化无效更新
import React, { Component } from 'react' import ReactDOM from 'react-dom/client' import { nanoid } from 'nanoid' const root = ReactDOM.createRoot(document.getElementById('root')) // PureComponent实现浅比较 class MyApp01 extends React.Component { state = { list: [1, 2, 3], } handleClick = () => { // ✔ [..this.state.list]表示一个新的数组,内存地址已经发生改变 // ❌ 浅比较:会导致list的内存地址,一致没有变化 this.state.list.push(4) this.setState(this.state) } render() { const { list } = this.state return ( <> <div> <button onClick={this.handleClick}>点击修改list</button> <Child list={list} /> </div> </> ) } } class Child extends React.PureComponent { shouldComponentUpdate(nextProps) { console.log('this.props.list => ', this.props.list) console.log('nextProps.list => ', nextProps.list) console.log( 'nexProps.list === this.props.list ===> ', nextProps.list === this.props.list ) if (nextProps.list === this.props.list) { return false } else { return true // 表示更新 } } render() { const { list } = this.props return <h1>Child - {list}</h1> } } const divNode = ( <div> <MyApp01 /> </div> ) root.render(divNode)
学而不思则罔,思而不学则殆!
分类:
React
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具