Действие запущено, но значение магазина не обновлено - PullRequest
0 голосов
/ 01 февраля 2019

Действие сработало, но хранилище не обновлено, когда действия в отдельном объекте, действие не работает, отдельное действие с методом возврата его работает

actions.js

export const actions = {
  GET_ORDERS_COUNT:'GET_ORDERS_COUNT'
};

order.js

class OrderDashboard extends React.Component {
    constructor(props) {
        super(props);
        this.state = {}
    }

    componentDidMount() {
        store.dispatch({
            type: actions.GET_ORDERS_COUNT
        });
    }
}

export default connect(mapStateToProps, {actions})(OrderDashboard);

reducer.js

const initState = {
    dashboardData:0
};

export default function (state = initState, action) {
    switch (action.type) {
        case actions.GET_ORDERS_COUNT: {
            return {
                ...state,
                dashboardData: 5,
            }
        }
    }

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Чтобы использовать store.dispatch(), вам нужно импортировать store.Однако я считаю, что это анти-паттерн, поэтому вам нужно будет использовать this.props.dispatch().Более того, эта строка export default connect(mapStateToProps, {actions})(OrderDashboard); неверна.Вам нужно export default connect(mapStateToProps)(OrderDashboard);, и вам нужно импортировать actions вверху файла.Таким образом, ваш код должен выглядеть примерно так:

import {actions} from './actions';

class OrderDashboard extends React.Component {
constructor(props) {
    super(props);
    this.state = {}
}

 componentDidMount() {
     this.props.dispatch({type:actions.GET_ORDERS_COUNT})
 }

}

export default connect(mapStateToProps)(OrderDashboard);

также, не уверен, почему вы хотите использовать здесь состояние и конструктор, но если больше ничего не добавлено в ваш код, тогда удалите конструктор, супер и состояние

0 голосов
/ 01 февраля 2019

Как насчет использования this.props вместо store, и убедитесь, что вы import { connect } from react-redux

import { connect } from 'react-redux'
class OrderDashboard extends React.Component {
constructor(props) {
    super(props);
    this.state = {}

}

componentDidMount() {
    this.props.dispatch({
        type: actions.GET_ORDERS_COUNT
    });
}

}

export default connect(mapStateToProps, {actions})(OrderDashboard);
...