我正在使用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参数只能如何处理?
答案 0 :(得分:3)
我们的项目中确实存在相同的问题,而声纳使您可以为Administration -> Congifuration -> Analysis Scope
中的规则和文件定义排除项。
您将在其中找到名为Ignore issues on Multiple Criteria
的部分,并可以在其中输入规则和“文件模式”以从该规则中排除文件。
答案 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) => {