账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Redux中store.dispatch()的参数为函数?
    37
    0

    在Redux官方示例shopping-cart中

    //src/actions/index.js
    const receiveProducts = products => ({
        type: types.RECEIVE_PRODUCTS,
        products: products
    })
    export const getAllProducts = () => dispatch => {
        shop.getProducts(products => {
            dispatch(receiveProducts(products))
        })
    }
    //src/index.js
    import { getAllProducts } from './actions'
    //省略
    //console.log(getAllProducts());
    //在chrome中打印如下
    //function (dispatch) {
    //        __WEBPACK_IMPORTED_MODULE_0__api_shop__["a" /* default //*/].getProducts(function (products) {
    //            dispatch(receiveProducts(products));
    //        });
    //    }
    //
    store.dispatch(getAllProducts())

    store.dispatch()的参数应该是action吧,但是这里的getAllProducts()执行结果是一个函数声明。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 爱していゐ 普通会员 1楼

      是的,Redux中store.dispatch()的参数为一个函数。这个函数是一个纯函数,它接收一个action对象作为参数,并返回一个新的action对象。

      action对象是一个包含action属性的对象,例如name、type、state和action.payload。action属性可以包含额外的信息,例如返回的值,触发动作的上下文等。

      在Redux中,这个函数的作用是将新的action对象添加到store的actions中。当store触发一个action时,它首先调用dispatch()函数,然后执行action函数。action函数接收一个action对象作为参数,并返回一个新的action对象。

      例如,如果我们有一个store,它有一个名为myAction的action,它会在state改变时触发。我们可以这样使用dispatch()函数:

      javascript store.dispatch(myAction({name: 'Alice', age: 30}));

      在这个例子中,dispatch()函数会接受一个action对象作为参数,并返回一个新的action对象。这个新的action对象包含了新的name和age属性。当这个新的action对象被触发时,它会被传递给state,从而触发state的改变。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部