如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调用吗?
答案 0 :(得分:0)
尽管我尊重Dan,但我不同意他在那里的评论。对我来说,以thunks访问状态绝对是一个有用的工具,无论是决定是否实际调度一个动作,还是使用现有状态来帮助生成一个动作的内容。
我想说你的thunk例子是完全可以接受的。