Immer.js 和 eslint fp/no-mutation

Immer.js and eslint fp/no-mutation

Eslint 总是抱怨 Unallowed reassignment 来自 fp/no-mutation 基本 immer 构造的规则:

const nextState = produce(baseState, draftState => {
    draftState.push({todo: "Tweet about it"})
    draftState[1].done = true
})

由于 draftState 总是在变化,如何避免这种烦恼?

您可以在 ESLint 配置中为 fp/no-mutation 规则添加例外。

"fp/no-mutation": [
   "error",
   {
     exceptions: [{ object: "draftState" }],
   },
 ]

注意:这足以满足变异对象为"draftState"的情况。所以你必须记住这一点:)

参考: https://github.com/jfmengels/eslint-plugin-fp/blob/master/docs/rules/no-mutation.md