react实现pure render时bind(this)隐患需注意!
发布时间 - 2026-01-11 00:05:19 点击率:次pure render 我就不多说了,附上我另一片文章链接 react如何性能达到最大化(前传)

不论你用不用immutable,只要你想达到pure render,下面值得你注意!
一天我和往常一样,开开心心得写着react,用着@pureRender,
export default class extends Component {
...
render() {
const {name,age} =this.state;
return (
<div>
<Person name={name} age={age} onClick={this._handleClick.bind(this)}></Person>//bug 所在
</div>
)
}
...
}
发现一个问题,对于Person这个子组件来说,在父组件re-render的时候,即使Person得前后两个props都没改变,它依旧会re-render,即使用immutable.js也不好使。
原来啊,父组件每次render,_handleClick都会执行bind(this) 这样_handleClick的引用每次都会改,所以Person前后两次props其实是不一样的。
那怎么办?把bind(this)去掉?不行 还必须得用
真正的答案是 让父组件每次render 不执行bind(this),直接提前在constructor执行好,修改之后
export default class extends Component {
constructor(props){
super(props)
this._handleClick=this._handleClick.bind(this)//改成这样
}
render() {
const {name,age} =this.state;
return (
<div>
<Person name={name} age={age} onClick={this._handleClick}></Person>
</div>
)
}
...
}
参考:React.js pure render performance anti-pattern
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# react
# pure
# render
# bind
# React 组件中的 bind(this)示例代码
# Modal.confirm是否违反了React模式分析
# react中关于函数调用()与bind this的原因及分析
# 我就
# 也不
# 我和
# 说了
# 都没
# 不多
# 两次
# 你想
# 写着
# 一个问题
# 你用
# 上我
# 还必须
# 来啊
# 前传
# 大家多多
# 往常
# 用着
# pre
# class
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
微信h5制作网站有哪些,免费微信H5页面制作工具?
Laravel如何使用Service Container和依赖注入?(代码示例)
智能起名网站制作软件有哪些,制作logo的软件?
Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】
大同网页,大同瑞慈医院官网?
英语简历制作免费网站推荐,如何将简历翻译成英文?
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
如何用花生壳三步快速搭建专属网站?
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
EditPlus中的正则表达式实战(5)
个人网站制作流程图片大全,个人网站如何注销?
创业网站制作流程,创业网站可靠吗?
如何自定义建站之星模板颜色并下载新样式?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
活动邀请函制作网站有哪些,活动邀请函文案?
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
C#如何调用原生C++ COM对象详解
微信公众帐号开发教程之图文消息全攻略
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
Python文本处理实践_日志清洗解析【指导】
怎样使用JSON进行数据交换_它有什么限制
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
利用JavaScript实现拖拽改变元素大小
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
公司网站制作价格怎么算,公司办个官网需要多少钱?
如何挑选优质建站一级代理提升网站排名?
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
如何快速搭建高效简练网站?
如何将凡科建站内容保存为本地文件?
如何在IIS7上新建站点并设置安全权限?
iOS正则表达式验证手机号、邮箱、身份证号等
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
如何在IIS中新建站点并配置端口与IP地址?
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
Python文件异常处理策略_健壮性说明【指导】

