switch (action.type) {
case 'FETCH_USER_REQUEST':
case 'FETCH_USER_SUCCESS':
case 'FETCH_USER_FAILIURE':
return { ...state, loading: action.payload.loading, ...action.payload.data };
case 'UPDATE_USER_REQUEST':
case 'UPDATE_USER_SUCCESS':
case 'UPDATE_USER_FAILIURE':
return { ...state, loading: action.payload.loading, ...action.payload.data };
当前,我有一个这样的switch语句,如您所见,我一直在不断调用REQUEST,SUCCESS,FAILURE。我想要一个函数来创建一个案例,让我检查 'FETCH_USER',它将为REQUEST,SUCCESS,FAILURE创建案例。
我尝试了类似case action.type.includes('FETCH_USER')
之类的方法,但这只会与“ FETCH_USER_REQUEST”的第一个结果相匹配并返回该结果。因此,我需要一个函数按此顺序设置三种情况。
答案 0 :(得分:7)
恕我直言,可以将其替换为简单的if
语句:
if (/(FETCH|UPDATE)_USER/.test(action.type))
return { ...state, loading: action.payload.loading, ...action.payload.data };
答案 1 :(得分:3)
您可以从字符串中删除最后一个单词。
switch (action.type.replace(/_[^_]*$/, '') {
case 'FETCH_USER':
return ...
case 'UPDATE_USER':
return ...
...
}