javascript - 从 Redux reducer 中的对象复制原型(prototype)函数

标签 javascript reactjs redux react-redux

case "CONNECTOR_CONNECTION_FULFILLED":
    state = {
        ...state,
        appState: 'loggedIn'
    };
    state.ourPlayer = { ...action.payload.player }

    break;

因此,当我的应用程序触发此操作时,它会创建一个播放器对象供我的应用程序使用。玩家对象具有原型(prototype)方法(player.spawn()、player.killed()等),当我以这种方式复制它时,这些方法不会被复制。

最佳答案

{ ...someObject } 对象扩展语法以及 Object.assign 方法仅复制对象自己的可枚举属性。不可枚举的 props、原型(prototype) props 和原型(prototype)本身都不会被复制。

因此,虽然在 Redux 世界中不推荐这样做,但您可以为域对象创建某种复制构造函数,例如:

class Player {
  constructor(anotherPlayer) {
    // copy the props of another player there
  }
}

并在 reducer 中使用它:

case "CONNECTOR_CONNECTION_FULFILLED":
   state = {
     ...state,
     appState: 'loggedIn',
   };
   state.ourPlayer = new Player(action.payload.player)

   break;

关于javascript - 从 Redux reducer 中的对象复制原型(prototype)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44975643/

相关文章:

javascript - 我们如何模拟 Redux 异步操作的获取?

javascript - 防止重复插入文档

javascript - Lodash orderBy - 在开头以 $ 符号对价格进行排序,如数字

javascript - 逐行对对象组中的每一行求和

reactjs - 如何在 getServerSideProps 中使用 fetch 转发 cookie?

javascript - React/Redux - 前一个操作完成后触发操作

reactjs - Action 创建者的解释和类型的提取

javascript - Chrome 中的 onScroll 滚动To 行为平滑

javascript - Socket.IO 404 在本地工作,但在通过 Netlify 部署时不工作

html - 阻止 Prettier 格式化程序将 React JSX 文件中的每个 HTML 标签放在自己的行上?