Javascript 在Redux操作中减少混乱的方法是什么?

Javascript 在Redux操作中减少混乱的方法是什么?,javascript,redux,Javascript,Redux,在Redux中声明操作的常见模式是将常量指定给字符串 const ACTION = 'ACTION'; 但在现实世界中,这种方法会使应用程序中的动作部分变得臃肿。很难添加和编写这样低级的东西。我自己看到并写了很多可笑的constants.jss,其中只包含绑定到常量的字符串。好吧,这让我觉得自己是个老派的人,但这是这种方法对我唯一的好处 我相信,对于实际应用来说,这不是一个好的模式 您如何声明和重用操作 为什么Redux库设计成这样?您可以使用Redux-ducks方案使您的操作/简化程序更加

在Redux中声明操作的常见模式是将常量指定给字符串

const ACTION = 'ACTION';
但在现实世界中,这种方法会使应用程序中的动作部分变得臃肿。很难添加和编写这样低级的东西。我自己看到并写了很多可笑的
constants.js
s,其中只包含绑定到常量的字符串。好吧,这让我觉得自己是个老派的人,但这是这种方法对我唯一的好处

我相信,对于实际应用来说,这不是一个好的模式

您如何声明和重用操作


为什么Redux库设计成这样?

您可以使用Redux-ducks方案使您的操作/简化程序更加模块化和可维护。不再有充满动作类型的constants.js文件


至于重用动作,可以使用redux-thunk/saga创建动作链。通过这种方式,您可以多次重用操作。

您可以使用redux ducks方案使您的操作/简化程序更加模块化和可维护。不再有充满动作类型的constants.js文件

至于重用动作,可以使用redux-thunk/saga创建动作链。通过这种方式,您可以多次重复使用操作。

什么模式不是好模式?常数?弦

没有任何东西要求动作类型必须是字符串——这很简单。类型可以是符号、对象或任何其他可用于在代码中做出决策的内容

,人类擅长阅读文本

查看该部分,例如,任何。

什么是不好的模式?常数?弦

没有任何东西要求动作类型必须是字符串——这很简单。类型可以是符号、对象或任何其他可用于在代码中做出决策的内容

,人类擅长阅读文本


查看该部分,例如。

就我个人而言,即使是我声明常量文件时也非常恼火。这使我的项目变得臃肿,捆绑包的规模不断增加

我想说,如果你有一个减速机做相同的工作,不同的行动,你一定要看看。该链接来自redux文档本身

我将尝试通过以下代码来解释这一点

假设你有一个常量文件,我在其中

export default RECEIVE_DICT_2 = 'RECEIVE_DICT_2'
export default RECEIVE_DICT_1 = 'RECEIVE_DICT_1'
假设你有一个减速机

第一减速器

第二减速器

现在,如果您看到两个reducer执行完全相同的操作,但是在调度操作时,您需要指定每个键,因为我们在常量中指定了它

所以你的行动会是

firstAction(dict){
return {
   action:'RECEIVE_DICT_1',
   dict
  }
}

secondAction(dict){
return {
   action:'RECEIVE_DICT_2',
   dict
  }
}
显然,这是太多的代码膨胀。所以在这里我们可以使用高阶减缩器,然后扔掉常量文件

现在你的减速机是这样的

export default function parentReducer(code){
 return function commons(state = state,action){
  switch(action.type){
    case `RECEIVE_DICT_${code}`:
      return Object.assign({},state,{
        dict : action.dict
      })
    }
  }
 }

我希望你明白了。你可以在我上面分享的链接中了解更多信息。

就我个人而言,即使我对声明常量文件感到非常恼火。这使我的项目变得臃肿,捆绑包的规模不断增加

我想说,如果你有一个减速机做相同的工作,不同的行动,你一定要看看。该链接来自redux文档本身

我将尝试通过以下代码来解释这一点

假设你有一个常量文件,我在其中

export default RECEIVE_DICT_2 = 'RECEIVE_DICT_2'
export default RECEIVE_DICT_1 = 'RECEIVE_DICT_1'
假设你有一个减速机

第一减速器

第二减速器

现在,如果您看到两个reducer执行完全相同的操作,但是在调度操作时,您需要指定每个键,因为我们在常量中指定了它

所以你的行动会是

firstAction(dict){
return {
   action:'RECEIVE_DICT_1',
   dict
  }
}

secondAction(dict){
return {
   action:'RECEIVE_DICT_2',
   dict
  }
}
显然,这是太多的代码膨胀。所以在这里我们可以使用高阶减缩器,然后扔掉常量文件

现在你的减速机是这样的

export default function parentReducer(code){
 return function commons(state = state,action){
  switch(action.type){
    case `RECEIVE_DICT_${code}`:
      return Object.assign({},state,{
        dict : action.dict
      })
    }
  }
 }

我希望你明白了。你可以在我上面分享的链接中了解更多信息。

>什么是不好的模式?常数?串?不,一般来说,编写一系列样板文件,包括contsants和action创建者。感谢您提供的链接,也就是说,
类型
字段应该是可序列化的,以确保时间旅行调试正常工作,字符串工作得最好,因为它们都是可序列化和可读的。有关更多信息,请参阅。>什么是不好的模式?常数?串?不,一般来说,编写一系列样板文件,包括contsants和action创建者。感谢您提供的链接,也就是说,
类型
字段应该是可序列化的,以确保时间旅行调试正常工作,字符串工作得最好,因为它们都是可序列化和可读的。有关更多信息,请参阅。很好,您使用ES2015字符串模板的想法在某些情况下会有所帮助。很好,您使用ES2015字符串模板的想法在某些情况下会有所帮助。