在react-redux中究竟如何调用reducer函数

时间:2019-02-19 06:56:04

标签: reactjs react-redux

我真的对这段代码感到困惑。我只想知道我们如何将参数传递到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;
    }
}

1 个答案:

答案 0 :(得分:2)

配置redux存储后,必须已将化简器传递给here。 现在,如果您在示例中看到的话,他们正在呼叫store.dispatch(<some_action>)。基本上,现在您的商店知道所有减速器都在用什么,它会使用分派功能中传递的有效负载调用每个减速器,并向您返回更新的商店。但是最有可能的是,您不是直接调用store.dispatch(),而是必须使用connect()来访问存储。如here所述,它将组件连接到redux存储,现在您不必调用store.dispatch,而是可以直接访问调度函数,在该函数中传递有效负载,并且继续执行与第一个示例相同的过程。您不必导入呼叫减少器,redux会为您完成。希望这可以弄清楚。