【发布时间】:2020-04-22 23:12:35
【问题描述】:
背景,我目前正在开发基于 React 的 Food Truck Finder 应用程序。据我了解,在反应中,如果您想更改 state 中的值,您必须有一个监听器,例如:
handleTruckTypeChange = (idx) => (e) => {
const newTrucks = this.state.data.map((truck, sidx) => {
if (idx !== sidx) return truck;
return { ...truck, type: e.target.value };
});
this.setState({ data: newTrucks });
}
这对于我在表中的一些其他值工作正常,但我的日程对象有一个大对象。它处理几十个值,我不想为每个值编写一个特殊的事件侦听器。最重要的是,我有一个使用 idx 作为索引的计划对象数组。例如,每一天都有一个 startTime、endTime、openClosed 和 cost。
有没有办法让它们都由同一个事件侦听器处理,所以我不会制作 7 个相同函数的副本来处理每个更改?
我如何调用 onChange 的示例。
<td>
<FormControl className={classes.margin}>
<InputLabel htmlFor="openClosed">O/C</InputLabel>
<NativeSelect
id="openClosed"
value={this.state.schedule[idx].monOpen}
onChange={this.handleScheduleChange(idx)}
input={<BootstrapInput />}
>
<option aria-label="None" value="" />
<option value={"0"}>Open</option>
<option value={"1"}>Closed</option>
</NativeSelect>
</FormControl>
</td>
【问题讨论】:
-
现在每次修改对象中的相同
type键时都执行return { ...truck, type: e.target.value };,或者你有一些特殊的[type]?因为将其存储为[idx]: e.target.value,然后stata.data[idx]是数据中的相关卡车