gpt4 book ai didi

reactjs - 何时在 JSX 中使用匿名函数

转载 作者:行者123 更新时间:2023-12-03 17:05:30 28 4
gpt4 key购买 nike

有人可以解释一下

匿名函数

  <button onClick={() => this.functionNameHere()}></button>



调用如下函数
  <button onClick={this.functionNameHere()}></button>

以及何时使用其中任何一种(例如在不同的场景中使用一个而不是另一个)。

最佳答案

第一个示例正确绑定(bind)了 this 的值(lambdas 努力在 ES 2015 中解决的确切问题)。

 () => this.functionNameHere()

后者使用 this 的范围值这可能不是您所期望的。例如:
export default class Album extends React.Component {

constructor(props) {
super(props);
}

componentDidMount () {
console.log(this.props.route.appState.tracks); // `this` is working
axios({
method: 'get',
url: '/api/album/' + this.props.params.id + '/' + 'tracks/',
headers: {
'Authorization': 'JWT ' + sessionStorage.getItem('token')
}
}).then(function (response) {
console.log(response.data);
this.props.route.appState.tracks.concat(response.data); // 'this' isn't working
}).catch(function (response) {
console.error(response);
//sweetAlert("Oops!", response.data, "error");
})
}

我们需要在这里加入一个 lambda:
.then( (response) => {
console.log(response.data);
this.props.route.appState.tracks.concat(response.data); // 'this' isn't working
} )

或手动绑定(bind):
.then(function (response) {
console.log(response.data);
this.props.route.appState.tracks.concat(response.data); // 'this' isn't working
}.bind(this) )

示例窃取自: React this is undefined

关于reactjs - 何时在 JSX 中使用匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42322553/

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