如何创建新对象作为默认 arg 对象

How to create new object as default arg object

所以我们可能在减速器中有这个:

const defaultState = {...};

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

有什么方法可以为每次调用 userReducer 获取 defaultState 对象吗? 像这样:

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

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

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

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

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

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

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

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