Javascript 如何重构那些非常相似的箭头函数?
我正在重构一个react文件中的一些代码,我有两个函数,它们几乎做相同的事情。。。但是一个返回一个函数,另一个执行一些代码 我现在不太擅长ES6和箭头功能。我不知道如何重构这个Javascript 如何重构那些非常相似的箭头函数?,javascript,ecmascript-6,arrow-functions,Javascript,Ecmascript 6,Arrow Functions,我正在重构一个react文件中的一些代码,我有两个函数,它们几乎做相同的事情。。。但是一个返回一个函数,另一个执行一些代码 我现在不太擅长ES6和箭头功能。我不知道如何重构这个 switchEventSelectedSchedule = cb => option => { this.setState( // Mutate the state () => ({ eventSelected: option.id, i
switchEventSelectedSchedule = cb => option => {
this.setState(
// Mutate the state
() => ({
eventSelected: option.id,
isLoading: true
}),
// Callback to fire when the state has been mutated with the new event id
async () => {
await this.longPollingAllMatches();
this.setState(() => ({
isLoading: false
}));
const { currentRoundId, rounds } = this.state;
cb(rounds, currentRoundId);
}
);
};
switchEventSelectedRoundTable = option => {
this.setState(
// Mutate the state
() => ({
eventSelected: option.id,
isLoading: true
}),
// Callback to fire when the state has been mutated with the new event id
async () => {
await this.longPollingAllMatches();
this.setState(() => ({
isLoading: false
}));
}
);
};
在一种情况下,我需要返回cb函数,否则我必须只执行代码的其余部分
抱歉似乎很愚蠢,但我想我误解了ES6语法中的某些内容来实现这一点
很多thx 只需让switchEventSelectedRoundTable使用不执行任何操作的回调调用另一个函数即可。因为switchEventSelectedSchedule是,所以这很简单:
switchEventSelectedRoundTable = switchEventSelectedSchedule((rounds, currentRoundId) => {});
在这里,您可以尝试使用Babel将ES6转换为ES5:我不认为人们可以在不进行重大猜测的情况下帮助您,因为您没有解释当前代码应该完成什么,也没有显示调用上下文,也没有解释重构的目标是什么。我个人不喜欢switchEventSelectedSchedule=cb=>option=>{}这样的代码结构,因为它很难阅读,我们需要查看调用上下文才能了解它是如何使用的。@jfriend00我的答案中有没有遗漏什么?不知道为什么这个问题在投票中变得不清楚。@Bergi-好吧,这个问题对我们中的一些人来说并不清楚,我仍然不知道这个问题如何导致你的答案。所以,即使有人认为他们理解你给我的答案,我仍然不理解这个问题。对我来说,这是一个不明确的问题。不清楚是在旁观者的眼中,所以我想你能理解这一点是值得称赞的。我仍然不清楚。@jfriend00我知道OP想要重构这个工作代码,确实识别出代码重复,但不知道如何解决它。当然,清晰度是一个主观的衡量标准:-它帮了我很多!!!:非常感谢