React Redux:将状态传递给Actions是反模式。什么是解决方案?

时间:2016-12-09 08:13:10

标签: reactjs redux react-redux redux-thunk

in this answer所示,将状态传递给ActionCreator被视为反模式。因此,使用Redux Thunk Middleware访问该状态。我想知道如何解决以下(流行)场景:

我是根据前端搜索表单中的过滤器从服务器获取项目。当然,我需要将过滤器传递给我的服务器,所以我在我的动作创建者

中这样做
export function getResults(filters){
   return Axios.get('localhost:80/getresults/',{params:filters}).then(
      // do something with results here.
   )
}

但这被认为是一种反模式,因为filters来自商店。

或者,我可以像这样使用redux thunk:

export function getResults(){
   return function(dispatch,getState){
      var filters = getState().reducer.filters;
      return Axios.get('localhost:80/getresults/',{params:filters}).then(
         // do something with results here.
      )
   }
}

这也被认为是一种反模式,因为我正在访问状态。

那么我将如何以正确的方式实现它?我应该完全在其他地方进行ajax调用吗?

1 个答案:

答案 0 :(得分:0)

尽管我尊重Dan,但我不同意他在那里的评论。对我来说,以thunks访问状态绝对是一个有用的工具,无论是决定是否实际调度一个动作,还是使用现有状态来帮助生成一个动作的内容。

我想说你的thunk例子是完全可以接受的。