Когда я обновляю счетчик 1, он увеличивается, но компонент не получает обновленное состояние. После обновления состояния счетчик не показывал обновленный номер. Но если я go перехожу к другому компоненту и возвращаюсь к компоненту счетчика, я получаю обновленное состояние. Вот страница счетчика -
import React, { Component } from 'react'
import {connect} from 'react-redux'
import {increaseXaomi} from '../../store/actions/counterAction';
class Counter extends Component {
increaseXaomi = ()=>{
this.props.increaseXaomi();
}
render() {
console.log(this.props)
return (
<div className="container">
<div className="row">
<p>Xaomi <strong>{this.props.xaomi}</strong></p>
<p>Iphone <strong>{this.props.iphone}</strong></p>
<p>Huai <strong>{this.props.huai}</strong></p>
<button className="btn" onClick={this.increaseXaomi}>Increase Xaomi</button>
</div>
</div>
)
}
}
const mapStateToProps = ({counter})=>{
return counter;
}
const mapDispatchToProps = (dispatch)=>{
return {
increaseXaomi: ()=>{
increaseXaomi(1)(dispatch)
}
}
}
export default connect(mapStateToProps,mapDispatchToProps)(Counter);
Действие счетчика вызывается, когда из компонента вызывается метод увеличенияXaomi.
export function increaseXaomi(num=1){
return (dispatch)=>{
dispatch({
type:'INCREASE_XAOMI',
payload:num
})
}
}
Счетчик-редуктор получает тип действия и значение счетчика для увеличения счетчика. Возвращает обновленное состояние.
let initState = {
xaomi:0,
iphone:0,
huai:0
}
function counterReducer(state=initState,action){
switch(action.type){
case 'INCREASE_XAOMI':
state.xaomi+=action.payload
return state;
default:
return state;
}
}
export default counterReducer;