先谢谢了。我使用不变性-帮助者设置状态。但是我在this.setState
附近遇到eslint错误,它说:Use callback in setState when referencing the previous state
由于我使用不变性助手,是否有任何解决方法,我是否需要使用prevState
任何人都可以分享正确的方法。
import update from 'immutability-helper';
moveSection = (dragIndex, hoverIndex) => {
const { list} = this.state;
const dragCard = list[dragIndex];
this.setState(
update(this.state, {
list: {
$splice: [
[dragIndex, 1],
[hoverIndex, 0, dragCard],
],
},
}),
); };
答案 0 :(得分:1)
尝试一下:
this.setState(
(state) => {
return update(state, {
list: {
$splice: [
[dragIndex, 1],
[hoverIndex, 0, dragCard],
],
},
})
}
);
答案 1 :(得分:0)
它告诉你这样做:
this.setState(prevState =>
update(prevState, {
list: {
$splice: [
[dragIndex, 1],
[hoverIndex, 0, dragCard],
],
},
}),
);
如果状态快速连续更改了多次,react可以批处理这些更改并将其全部应用到单个渲染中。结果,如果您调用update
并传递this.state
,则不能保证this.state
处于最新状态,因此最终可能会抛出由另一个状态更新。
如果改为使用setState的函数版本,则确保 处于最新状态,并且消除了可能的错误。