通过从非 React 组件分派操作来更新 React 组件

2023-12-24

当用户将商品添加到购物车时,我试图更新项目上的购物车按钮。

我在 React.js 中构建了网站的部分内容 - 例如购物车、购物车按钮等。

配置Store.js:

export default function configureStore(initialState) {
      const store = createStore(
        reducers,
        initialState
      return store
    }

Action:

export function updateCart(payload) {
    return {
        type: CART_UPDATE,
        payload: payload
    }
}

Reducer:

export default function cart(state = {}, action) {

    switch (action.type) {

            case CART_UPDATE:

            const   cart = {
                        data: action.payload.cart,
                        errors: action.payload.errors,
                        isFetching: false
                    };

            return {
                ...state,
                ...cart
            };

    return state;
}

购物车按钮.js

... componnent etc.

function mapStateToProps(state) {
    return {
        cart: state.cart.data
    };
}

export default connect(mapStateToProps)(CartButton);

Provider

import configureStore from './store/configureStore'
var store = configureStore();

ReactDOM.render((<Provider store={store}><Cart showControls={true} /></Provider>), document.getElementById('react-cart'));

我正在调度一个应该从非反应组件更新购物车数量的操作,如下所示:

// imports 
import { dispatch } from 'redux';
import { updateCart } from '../../actions/cart_actions';
import configureStore from '../../store/configureStore'
var store = configureStore();

进而..

store.dispatch(updateCart(response));

The 行动已派发状态已更新。购物车按钮组件通过连接。 React-Redux connect() 函数。但不知何故,它没有用新数量更新组件。

当我从购物车 React 组件中分派一个操作时,它工作正常。

我可能会遗漏一些明显的东西。有什么建议么?


所以我最终发现,你不应该在多个地方定义你的商店。

我只是从我的根 app.js 文件中导入了存储常量,如下所示:

从 './app' 导入 { store } ;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过从非 React 组件分派操作来更新 React 组件 的相关文章

随机推荐