redux - 表单提交后 Redux 状态未更新
问题描述
我在使用 Redux 更新状态时遇到了一些问题。我正在使用 redux-form 提交一些值,并且我的 action/reducer 可以正常工作。但是我的更新操作/减速器在提交表单后没有改变状态,我得到了相同的状态返回。这是我的 ReduxDevTools 的截图: 所以当提交表单时,我可以看到 addMovementForm 的值部分中更新了新值(movementWeight:'200')。但是当我的 UPDATE_MOVEMENT 动作被调用时,我仍然得到了我的原始值(movementWeight:'100')。我知道我做错了什么,但我不知道是什么。这是我的行动:
export const updateMovement = (id, formValues) => async dispatch => {
const response = await movements.patch(`/movements/${id}`, formValues);
const updateId = response.data.id;
dispatch({ type: constants.UPDATE_MOVEMENT, payload: { data: response.data, id: updateId } });
我的减速机:
const initialState = [];
const movementReducer = (state = initialState, action) => {
switch (action.type) {
case CREATE_MOVEMENT:
return [
...state, action.payload
];
case UPDATE_MOVEMENT:
return [ ...state.map(item => item.id === action.payload.id ? {...item, ...action.payload.data} : item)]
解决方案
推荐阅读
- javascript - 带有语义缩放的 D3 geoJson 地图
- android - 混合依赖版本时出错
- spring-boot - 我们可以从apache kafka消费者中的spring boot rest api app调用服务方法吗?
- qliksense - 如何从 qlik Engine api 获取带有日期的数据
- corda - 在 Corda 中,在 webapp 中创建 RPC 代理时超时
- android - 从 REST URL 解析数据
- c# - 如何在 wpf UserControl 中参数化绑定?
- java - 锯齿java发送批处理请求错误
- django - django2.0 国际版在我的服务器环境中不起作用
- java - 无法使用 JDBC 连接到 docker 中的本地 MySQL