Redux 减速器应该没有副作用。但是,如果某个操作应该触发浏览器中文件的下载(其中内容基于商店的状态),该怎么办?这当然应该算作副作用吗?像下面这样的方法可以吗?还是我应该寻找替代方法?
case 'SAVE_GRID': {
const { json } = state
fileDownload(json, 'data.json', 'application/json')
return state
}
除非你有非常复杂的状态转换,否则实际的fileDownload
应该发生在动作创建者中,而不是在减速器中。减速器应该负责合并/减少状态,仅此而已。
action:
export const saveGrid = (json) => {
return (dispatch) => {
fileDownload(json, 'data.json', 'application/json')
.then(() => {
dispatch({ type: 'SAVE_GRID', json });
});
}
}
reducer:
case 'SAVE_GRID': {
return {
...state,
json: action.json
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)