You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React+Redux中如何在reducer内重置所有props为初始值仅保留posterUrl

实现方案

直接修改RESET_MOVIE_STATE对应的分支逻辑即可,核心逻辑是先复用初始状态的所有movie属性,再用当前状态的posterUrl覆盖初始值,实现其他属性全重置、仅保留posterUrl的效果:

export const movieReducer = (state = initialState, action: MovieActions): IMovieState => {
  switch (action.type) {
    case MovieActionTypes.FETCH_MOVIE: {
      return { ...state, movie: action.payload };
    }
    case MovieActionTypes.RESET_MOVIE_STATE: {
      return {
        ...state,
        movie: {
          ...initialState.movie,
          // 仅保留当前状态的posterUrl,其余属性用初始值覆盖
          posterUrl: state.movie.posterUrl
        }
      };
    }
    default:
      return state;
  }
};

这个写法兼容性很强,后续如果给movie新增其他属性,不需要修改重置逻辑,新增属性会自动复用初始值。


TypeScript的影响

使用TypeScript对该实现没有负面影响,反而能提供类型校验保障:

  • 只要你的IMovieState类型定义正确,TypeScript会自动校验movie下的属性合法性,如果你误写了不存在的属性、或者属性类型不匹配,编译阶段就会抛出错误提示
  • 不需要额外写类型断言或者额外的类型处理代码,上面的示例代码可以直接在TS环境下运行

内容的提问来源于stack exchange,提问作者qweezz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:57:03