gpt4 book ai didi

javascript - 如何重写这个双箭头函数

转载 作者:行者123 更新时间:2023-11-30 19:50:20 25 4
gpt4 key购买 nike

我有一个函数可以更新我的日程表状态,即一组艺术家对象。目前我正在使用一个双箭头函数,它接受索引和艺术家 ID。但是由于我的 javascript linter,我不能使用双箭头功能。我该如何重写它?

handleArtistChange = index => evt => {
if (evt) {
const newSchedule = this.state.schedule.map((artist, stateIndex) => {
if (index !== stateIndex) return artist;
return { ...artist, artist_id: evt.value };
});
this.setState({ schedule: newSchedule });
}
}

我尝试了以下方法:

handleArtistChange = function(index) {
return function(evt) {
if (evt) {
const newSchedule = this.state.schedule.map((artist, stateIndex) => {
if (index !== stateIndex) return artist;
return { ...artist, artist_id: evt.value };
});
this.setState({ schedule: newSchedule });
}
}
}

但是这会导致无法读取未定义的属性“计划”的错误

调用我的函数:

const lineup = this.state.schedule.map((artist, index) => {
return (
<div key={index} className="form__input-group--lineup">
<div>
<label className="form__label">{getTextNode('Artist *')}</label>
<Select
onChange={this.handleArtistChange(index)}
onInputChange={this.handleInputChange}
isClearable
options={options}
styles={customStyles}
backspaceRemovesValue={false}
placeholder={`Artist #${index + 1}`}
classNamePrefix="react-select"
/>
</div>
<div className="form__input-group--time">
<label className="form__label">{getTextNode('start time *')}</label>
<input name="startTime" type="time" required autoComplete="true" className="form__input" value={this.state.startTime} onChange={this.handleTimeChange(index)} />
</div>
<button type="button">-</button>
</div>
);
});

最佳答案

如有必要,您可以修改 linting 规则。如果你想修改你的函数,这里有一种定义它的方法,一个常规函数返回一个绑定(bind)到外部 this 的匿名函数:

function handleArtistChange(index) {
return (function(evt) {
if (evt) {
const newSchedule = this.state.schedule.map((artist, stateIndex) => {
if (index !== stateIndex) return artist;
return { ...artist, artist_id: evt.value };
});
this.setState({ schedule: newSchedule });
}
}).bind(this);
}

关于javascript - 如何重写这个双箭头函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54552005/

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