用于CombineReducer的减速器的声纳代码气味

时间:2018-12-05 09:10:54

标签: javascript reactjs redux sonarqube

我正在使用CombineReducer来组合减速器和减速器

const todo = (state = {}, action) => {
  switch (action.type) {
    //...

    case 'TOGGLE_TODO':
      if (state.id !== action.id) {
        return state
      }

      return Object.assign({}, state, {
        completed: !state.completed
      })

    default:
      return state
  }
}

我的问题是,如果我正在定义减速器,就像我听到声纳代码气味

Function parameters with default values should be last1

但是在这个序列中组合reducer pass参数只能如何处理?

4 个答案:

答案 0 :(得分:3)

我们的项目中确实存在相同的问题,而声纳使您可以为Administration -> Congifuration -> Analysis Scope中的规则和文件定义排除项。

您将在其中找到名为Ignore issues on Multiple Criteria的部分,并可以在其中输入规则和“文件模式”以从该规则中排除文件。

喜欢: enter image description here

答案 1 :(得分:1)

来自Sonarqube文档:

  

具有默认值的功能参数应该位于最后:

     

...但是应声明所有具有默认值的函数参数   函数参数后面没有默认值。否则   使呼叫者无法利用默认值;他们   必须重新指定默认值或通过undefined才能   “获取”非默认参数。

但是,这确实与Redux一起使用,因为它首次使用undefined作为第一个参数调用reduce。如果要继续使用此模式,则需要禁用规则或从分析中跳过该行。

答案 2 :(得分:1)

使用{}设置操作:

例如,更改以下代码

const todo = (state = {}, action) => { }

对此

const todo = (state = {}, action = {}) => { }

将是最安全的方法。

答案 3 :(得分:0)

如果为第二个arg定义默认值怎么办?

const todo = (state = {}, action = null/undefined) => {