WebStorm中的Redux工具包操作参数

yk9xbfzb  于 2022-11-12  发布在  Storm
关注(0)|答案(4)|浏览(277)

我开始使用redux工具包,但是当我尝试使用参数调度操作时,IDE发出警告:
“参数类型{...}不可分配给参数类型{payload:{...}}”

或“参数数目无效,应为2”

我猜它认为国家应该是第一个论点。
有什么办法可以纠正吗?
编辑:我为这个具体问题找到了一个临时的解决方案。基本上,我所做的是,我把那些动作从文件中移出来。
如果以前我有过:

// reducer.js
const state = createSlice({
  // ...
  reducers: {
    handleNumber(state, action){}
  }
})

export const { handleNumber } = state.actions
export default state.reduer

现在我有:
第一个
正如注解中所说的,Webstorm似乎会对同一个文件中的名称进行模式匹配,但如果这些名称在不同的文件中,它会查看typescript定义。
但这会引发另一个问题,现在当我按住Ctrl键并单击actions.js中的函数名时,它不会转到函数,而是导航到类型声明。

dgsult0t

dgsult0t1#

我是RTK的共同维护者。这看起来很奇怪,应该能正常工作。我想更深入地研究一下这个问题。你能创建一个关于这个问题的复制库,并将其发布到我们的github问题跟踪器上吗?

fjaof16o

fjaof16o2#

我遇到过类似的问题,我不知道是什么导致了这个问题,但我发现删除/重命名您的(隐藏的).idea文件夹是有用的。之后,重新启动Webstorm,它应该会生成一个新的.idea文件夹。
因此,问题似乎是Webstorm IDEA默认设置中的某些内容导致了此问题。如果您不确定是否要保留某些设置,请确保先重命名.idea文件夹。
希望这能奏效!

ubby3x7f

ubby3x7f3#

我遇到了同样的问题,但删除了.idea并重新启动了ide。

qmelpv7a

qmelpv7a4#

它适用于导出具有不同名称的操作,例如

const exmapleSlice = createSlice({
  name: 'exmapleSliceId',
  initialState: exmapleSliceInitialState,
  reducers: {
    _changeSomeField(state, action){
      state.someField = action.payload;
    }
  }
});

export const {
  _changeSomeField: changeSomeField,
} = exmapleSlice.actions;

相关问题