【问题标题】:How to create new object as default arg object如何创建新对象作为默认 arg 对象
【发布时间】:2020-06-06 09:31:38
【问题描述】:

所以我们可以在 reducer 中使用它:

const defaultState = {...};

export const userReducer = (state = defaultState, action: any) => {
   // ...
}

有没有办法为每次调用 userReducer 获取一个 defaultState 对象? 像这样的:

const getDefaultState = () => ({...});

export const userReducer = (state = getDefaultState(), action: any) => {
   // ...
}

这在 JS 中可能吗?它可能对 Redux reducer 没用,但总的来说我很好奇。

【问题讨论】:

  • 在您的第二个示例中什么不起作用? this不是在做你想做的事吗?
  • 我猜是的,我只是没想到它会起作用,但它是有道理的,谢谢

标签: javascript node.js ecmascript-2018


【解决方案1】:

是的,正如@blex 所指出的,你的意图是完全可行的。

您的 sn-p 有一个小错误,可能会导致您出现问题:具有默认值的参数(即state)必须排在具有非默认值的参数(即action)之后。

这是一个极简主义的例子:

let x = () => 3;
let y = (a, b = x()) => a + b;

console.log(y(5)); // 8
console.log(y(5, 1)); // 6

【讨论】:

  • 为了接受答案,可能想要一个与 OP 类似的形式?
  • 我将把它作为练习留给读者,因为它似乎对后代没有用,也没有为答案增加太多价值。越少越好。
  • 少即是我的跳汰机
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-05
  • 1970-01-01
  • 2020-04-09
  • 1970-01-01
  • 2015-01-28
  • 2017-11-29
相关资源
最近更新 更多