gpt4 book ai didi

javascript - React 是否在 setState 回调中绑定(bind)了它?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:48:37 26 4
gpt4 key购买 nike

我期待看到 undefined单击“无绑定(bind)”按钮时被记录,因为当您将方法引用明确作为回调传递时,不应使用正确的方式调用它 this上下文,但使用箭头函数,它应该

但是,我看到回调函数可以访问thisthis.state.number 的值被正确记录。方法引用和箭头函数执行完全相同。为什么?

这与箭头函数类属性无关,它与传递对方法的引用作为对 setState 的回调有关。与箭头函数相反。

class Hello extends React.Component {
constructor(props) {
super(props);
this.state = {
number: 1,
};
}

onClickWithThisBindingInCallback = () => {
this.setState({ number: 2 }, () => { this.myCallback(); });
};

onClickWithoutThisBindingInCallback = () => {
const myCb = this.myCallback;
this.setState({ number: 3 }, myCb);
};

myCallback() {
console.log(this.state.number);
}

render() {
return (
<div className="App">
<button onClick={this.onClickWithThisBindingInCallback}>With binding</button>
<button onClick={this.onClickWithoutThisBindingInCallback}>Without binding</button>
</div>
);
}
}

ReactDOM.render(
<Hello name="World" />,
document.getElementById('container')
);
<script src="https://unpkg.com/react@16.2.0/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16.2.0/umd/react-dom.development.js"></script>
<div id="container">
<!-- This element's contents will be replaced with your component. -->
</div>

最佳答案

React 使用组件的实例this 调用setState 的回调函数,如this line of code 所见| .

致谢:@Li357

关于javascript - React 是否在 setState 回调中绑定(bind)了它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48135214/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com