Javascript 使用ReactJS';中的函数编程替换大量switch语句;s商店和行动
我不知道是不是只有我,但ReactJS存储中的switch语句会造成麻烦,所以我想也许有一种方法可以用更好的、模块化的switch语句替换这些switch语句 因此,我在互联网上研究了相当长的一段时间,发现一种功能性的方法是可行的 开关 计划 第一个问题 我不想将Javascript 使用ReactJS';中的函数编程替换大量switch语句;s商店和行动,javascript,functional-programming,reactjs,Javascript,Functional Programming,Reactjs,我不知道是不是只有我,但ReactJS存储中的switch语句会造成麻烦,所以我想也许有一种方法可以用更好的、模块化的switch语句替换这些switch语句 因此,我在互联网上研究了相当长的一段时间,发现一种功能性的方法是可行的 开关 计划 第一个问题 我不想将CREATE、UPDATE、DESTROY作为函数名,因为它不灵活,而且我已经失去了对常量的使用,所以有没有办法我仍然可以将Constant.CREATE、Constant.UPDATE和Constant.DESTROY作为函数名 第二
CREATE
、UPDATE
、DESTROY
作为函数名,因为它不灵活,而且我已经失去了对常量的使用,所以有没有办法我仍然可以将Constant.CREATE
、Constant.UPDATE
和Constant.DESTROY
作为函数名
第二个问题
因此理论上,我可以将每个动作创建
,更新
,销毁
模块化为单独的文件,我使用的是browserify
那么我该怎么做呢?您可以将查找表定义为
var move={};move[Constants.CREATE]=function(){…}
.wew,第一个问题解决了,就像这样:D
Dispatcher.register(function (action) {
var text;
switch(action.actionType) {
case Constants.CREATE:
create(action.text)
Store.emitChange();
break;
case Constants.UPDATE:
update(action.id, {text:action.text})
Store.emitChange();
break;
case TodoConstants.DESTROY:
destroy(action.id);
Store.emitChange();
break;
default:
}
});
getAction = function(action) {
var move = {
"CREATE": function() {create(action.text)},
"UPDATE": function() {update(action.id, {text: action.text})},
"DESTROY": function() {delete(action.id)}
}
return move[action.type](); // if key exist
}