【发布时间】:2016-02-05 18:45:21
【问题描述】:
我正在用 React JSX 编写一个函数,其中包含需要与 this 对话的回调
this.socket.on('addWashedMission', washedMission => {
console.log('onAddWashedMission - %s - %s', washedMission.name,
new Date(washedMission.birthtime));
this.state.washedMissions.filter(function(o) {
return o.name === washedMission.name;
}).forEach(function(element, i, arr) {
// HERE IT IS //
this.state.washedMissions.state.washedMissions.slice(
this.state.washedMissions.state.washedMissions.indexOf(element), 1);
});
this.state.washedMissions.push(washedMission);
this.state.washedMissions.sort(function(a,b) {
return b.birthtime - a.birthtime;
});
this.setState({
washedMissions: this.state.washedMissions
});
});
注意到this.state.washedMissions了吗?当我在该回调中时,Firefox 脚本调试器向我显示浏览器不知道 this 是什么,因此我无法以这种方式操作我的数组。
如何确保this 在我的回调范围内——注意,回调是同步的,所以我不担心任何时间问题。
【问题讨论】:
-
既然你已经在使用箭头函数了,为什么不把它用于
forEach呢? -
李银空说得对。在你的 forEach 中使用箭头函数并解决问题。
标签: javascript scope reactjs react-jsx arrow-functions