【发布时间】:2020-02-19 03:39:14
【问题描述】:
我的 state.events 在由组件实例组成的数组中:EventContainer。
我希望我的 setState 在 state.events 数组中放置一个新的 EventContainer。但是,我希望 EventContainer 在进行 setState 调用的特定 EventContainer 之后立即进入索引。
我正在寻求对我的方法进行必要调整的帮助,或者,如果我的整个方法都不好,我正在寻求有关如何进行此操作的建议。非常感谢。
我正在开发一个行程构建器,它由代表特定日期的活动的行/EventContainers 组成。
每个 EventContainer 都有一个按钮,该按钮需要让用户能够在该 EventContainer 之后立即点击另一行。
class DayContainer extends React.Component {
constructor(props){
super(props);
this.state = {
events: [],
};
this.pushNewEventContainerToState = this.pushNewEventContainerToState.bind(this);
}
pushNewEventContainerToState (index){
let newEvent = <EventContainer />;
this.setState(prevState => {
const events = prevState.events.map((item, j) => {
if (j === index) {
events: [...prevState.events.splice(index, 0, newEvent)]
}
})
})
}
render(){
return (
<>
<div>
<ul>
{
this.state.events === null
? <EventContainer pushNewEventContainerToState= .
{this.pushNewEventContainerToState} />
: <NewEventButton pushNewEventContainerToState={this.pushNewEventContainerToState} />
}
{this.state.events.map((item, index) => (
<li
key={item}
onClick={() =>
this.pushNewEventContainerToState(index)}
>{item}</li>
))}
</ul>
</div>
</>
)
}
}
我在 setState 中的目标是在索引之后立即将 newEvent 拼接到 this.state.events 中(pushNewEventContainerToState 函数中的参数)。
我收到了这个错误,但我猜还有比这更多的原因:第 23:22 行:期望一个赋值或函数调用,而是看到一个表达式 no-unused-expressions。
【问题讨论】:
-
不应该在setState回调函数中添加return语句吗?
-
另外,也许你应该考虑使用切片而不是拼接。
-
将尝试切片。因此,如果我在事件之前添加一个 return,我会收到一条错误消息,说它需要在事件之后使用分号
标签: javascript arrays reactjs setstate