我真的对这段代码感到困惑。我只想知道我们如何将参数传递到reducer(state, action)
函数中。
我的主要问题是:action参数如何发送到我的Comments.js文件中的reducer函数?我什至没有导入ActionCreator.js文件,但是我能够使用返回的有效载荷值并对其进行注释。这怎么可能?有人,请以透明的方式向我解释。
请原谅我的代码段编辑
/ActionTypes.JS
export const ADD_COMMENT='ADD_COMMENT';
/ActionCreator.js
import * as ActionTypes from './ActionTypes';
export const addComment=(dishId, rating, author, comment)=>({
type:ActionTypes.ADD_COMMENT,
payload:{
dishId:dishId,
rating:rating,
author:author,
comment:comment
}
})
/Comments.js
import {COMMENTS} from "../shared/comments";
import * as ActionTypes from "./ActionTypes"
export const Comments=(state=COMMENTS, action)=>{
switch(action.type){
case ActionTypes.ADD_COMMENT:
var comment=action.payload;
comment.id=state.length
comment.date=new Date().toISOString()
console.log("Comment" + comment)
return state.concat(comment)
default:
return state;
}
}
答案 0 :(得分:2)
配置redux存储后,必须已将化简器传递给here。
现在,如果您在示例中看到的话,他们正在呼叫store.dispatch(<some_action>)
。基本上,现在您的商店知道所有减速器都在用什么,它会使用分派功能中传递的有效负载调用每个减速器,并向您返回更新的商店。但是最有可能的是,您不是直接调用store.dispatch()
,而是必须使用connect()
来访问存储。如here所述,它将组件连接到redux存储,现在您不必调用store.dispatch
,而是可以直接访问调度函数,在该函数中传递有效负载,并且继续执行与第一个示例相同的过程。您不必导入呼叫减少器,redux会为您完成。希望这可以弄清楚。