У меня есть компонент, который получает данные в методе 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,
}
}