在哪里绑定这个?
当你在React.js 的基于类的组件中创建一个函数时,你必须绑定才能从渲染方法调用它。否则函数将不在作用域内。this
有几种方法可以做到这一点。
永远不要bind this在渲染方法中。this每次重新渲染组件时,在 render 方法中绑定都会导致 React 创建一个新函数。这就是我们最常在构造函数中绑定的原因。
在构造函数中绑定。通过在构造函数中绑定,您可以使用this.FunctionName();
示例绑定这个
Class MyClass extends Component {
constructor(props) {
super(props);
this.FunctionName = this.FunctionName.bind(this);
}
myFunc () {
// code here
}
render() {
this.FunctionName();
return(
<div>
...
</div>
);
}
}
- 用户胖箭头函数而不是传统的函数定义。粗箭头函数在词法上绑定
this值。所以在类中使用粗箭头函数时,不必在构造函数中添加bind。
重要- 在 React 类中并不总是可以使用胖箭头函数。取决于你如何设置 React。你可能需要安装,
babel-plugin-transform-class-properties
然后.bablerc像这样将其添加到您的文件中,
{
"plugins": [
"transform-class-properties"
],
"presets": [
"react"
]
}
示例胖箭头
Class MyClass extends Component {
myFunc = () => {
// code here
}
render() {
this.FunctionName();
return(
<div>
...
</div>
);
}
}
概括
- 永远不要在渲染中绑定函数。
- 使用传统函数时总是在构造函数中绑定
- 这个用脂肪箭头功能时,在功能自动可用。