首页 文章

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

提问于
浏览
1

如图所示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

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

    我会说你的thunk例子是完全可以接受的 .

相关问题