在 redux 中使用 immer 时,避免 eslint 错误“@typescript-eslint/no-dynamic-delete”的最佳实践是什么?

问题描述 投票:0回答:1

我正在使用 package.json 中的这些依赖项:

    "@reduxjs/toolkit": "^1.9.5",
    "react-redux": "^8.1.2",
    "redux-devtools-extension": "^2.13.9",
    "eslint": "^9.16.0",
    "typescript-eslint": "^8.17.0",

因为 redux takeit 设置我在减速器定义中使用

immer
,所以我有这样的定义:

export const clubSlice = createSlice({
  ...
  reducers: {
    ...
    tableUnassigned: (
      state,
      action: PayloadAction<UnassignTableResponse>,
    ) => {
      const { gameId, tableNumber } = action.payload;
      const key = `${gameId}_${tableNumber}`;
      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
      delete state.tableAssignments[key];
    },

eslint 规则

@typescript-eslint/no-dynamic-delete
建议使用 Map 来代替。 但是,强烈建议 redux 切片坚持使用普通的旧 JavaScript 对象,因此我无法在没有序列化问题的情况下使用 Map,特别是如果我要添加
redux-persist

那么,当我想在 redux 减速器中使用 immer 从普通的旧 JavaScript 对象中删除元素时,避免违反 eslint 规则的最佳实践是什么?除了像上面的代码片段那样禁用它之外,在仍然使用 immer 的虚假可变性的同时,是否有更好的选择来避免此 lint 错误?

    

typescript eslint redux-toolkit
1个回答
0
投票
Lint 规则是让您在代码库中做出正确决策的建议,并且始终需要根据您正在工作的上下文进行调整。

这条规则显然不会让您对正在使用的工具做出正确的决定,所以这对您来说是错误的规则。

也就是说,您也可以指定

@typescript-eslint/no-dynamic-delete

。虽然不是 100% 相同,但结果非常相似。

undefined

	
© www.soinside.com 2019 - 2024. All rights reserved.