Почему Redux не выполняет рендеринг компонента, если состояния разные? - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть компонент, который получает данные в методе componentDidMount():

async componentDidMount() {
    try {
        this.res = await API.post(`clicks`, {data});
        this.props.setClicksData(this.res.data);
    } catch (err) {
        this.props.setClicksData(1);
    }
}

Когда сервер выдавал ошибку, я установил для данных о кликах что-либо, отличное от предыдущего состояния.Это мой reducer:

const initialState = {}

const tableReducer = (state = initialState, action) => {
    let newState;
    switch (action.type) {
        case `SET_CLICKS`:
            newState = JSON.parse(JSON.stringify(state));
            newState = action.data;

            console.log(state);
            console.log(newState);
            console.log(JSON.stringify(state) === JSON.stringify(newState))

            return newState;

        default: return state;
    }
}

export default ipReducer;

С console.log Я вижу, что объекты данных отличаются, и stringify доказал это.Мой журнал:

{} 
1 
false

Мое подключение Redux в компоненте является обычным:

const mapStateToProps = (state) => ({
    tableData: state.table.clicks,
})

const mapDispatchToProps = (dispatch) => {
    return {
        setClicksData: (data) => {
            return dispatch(setClicksData(data));
        },
    }
}

export default connect(mapStateToProps, mapDispatchToProps)(ClicksTable)

Я проверил импорт.Все в порядке.Так почему же Redux не рендерит компонент, если состояния разные?Пожалуйста, помогите!

ОБНОВЛЕНИЕ: После действия state.table должно быть:

{
    totalGood: int,
    totalBad: int,
    clicks: [{}, {}, {}...]
}

Мое действие:

export const setClicksData = (data) => {
    return {
        type: 'SET_CLICKS',
        data,
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...