javascript - 我应该在哪里绑定 React 组件中的方法?
问题描述
我现在学习 React 并注意到很多人将他们的方法绑定在构造函数中。
像这样:
class MyComponent extends React.Component {
constructor() {
super();
this.myMethod = this.myMethod.bind(this);
}
render() {
<button onClick={this.myMethod}>Click me</button>
}
myMethod() {
// do something
}
}
但是我习惯了这样写:
render() {
<button onClick={this.myMethod.bind(this)}>Click me</button>
}
有几个人告诉我,使用第二种方法是一种糟糕的体验。
那么你能告诉我第一种方法和第二种方法之间的区别吗?有什么优点和缺点吗?还是性能问题?
解决方案
你是对的,别人告诉你的也是对的。
鼓励您在构造函数中进行绑定,因为每个组件只调用一次构造函数,因此如果您在构造函数中进行绑定,它只会在 Webpack bundle.js 文件中创建一个新对象/函数,因此影响不大
不鼓励您直接在渲染中进行绑定,因为组件渲染有多种原因,例如当您执行 setState 时,当您的组件接收新道具时,您的组件将渲染很多次。因此,由于您在组件渲染时直接在渲染中绑定,因此每次在 Webpack bundle.js 中都会创建一个新函数,并且您的捆绑文件大小会增加,并且当您的应用程序包含数千个组件并且如果您直接在其中进行绑定时,这会影响性能在每个组件中渲染。
所以建议你只在构造函数中做绑定。希望澄清
推荐阅读
- javascript - 链接转换器系统无法正常工作php
- php - Magento:找不到类“DOMDocument”
- java - 将插入与 KeyHolder 一起使用时出现 ArrayIndexOutOfBoundsException
- javascript - 如何使用正则表达式检查不应包含重复数字的手机号码
- python - argparse中的帮助字符串,每个字符串都来自新行
- spring - 使用分离的 Spring 后端构建 Angular 应用程序时的不同项目结构
- java - 在 Java8 中使用 orElseGet 与 orElse
- bash - 用 AWK 加入两个文件,一个来自控制台的文件
- bolt-cms - 如何在 Bolt CMS 中实施 SEO
- php - 我想根据三个表显示这样的摘要