我将moment用于一些日期实用程序,并将数据存储在redux中。填写表格后,在后台搜索数据,我得到了这个错误,但我只是第一次搜索时得到的:
Error: Invariant failed: A state mutation was detected between dispatches, in the path 'app.departureDate._locale._longDateFormat.ll'. This may cause incorrect behavior.
这是减速器:
addDepartureDate(state, action) {
return { ...state, departureDate: action.payload };
}
在这里我使用数据:
const {
flightType,
localeConfig,
departure,
arrival,
departureDate,
arrivalDate,
currency
} = useSelector(state => state.app);
const startDate = departureDate;
只有当从反应日期中选择了一个新日期,但没有抛出错误时,该值才会更改。然后,我在尝试从后端获取数据后收到错误。
moment
实例是可变的且不可序列化的,因此不应保存在Redux存储中:
- https://redux.js.org/style-guide/style-guide#do-不变异状态
- https://redux.js.org/style-guide/style-guide#reducers-不得有副作用
更喜欢将日期值作为数字时间戳或字符串(即date.toISOString()
等(保存在存储中