Я пытаюсь установить глобальное состояние с использованием избыточности, и оно работает, когда я пытаюсь передать отдельные данные, но не работает, когда я пытаюсь передать несколько данных. Ниже мой код:
<CSButton
onPress={() => {
this.setState({
comment : this.state.comment,
region : this.state.region,
},
() => this.props.commentHandler(this.state),
this.props.regionHandler(this.state),
// I am getting correct answer when I console.log here
() => console.log(this.props.comment,'this.props.comment?'),
() => console.log(this.props.region,'this.props.region?'))}}>
<Text>Button</Text>
</CSButton>
//when I try to console.log using another button, works fine for 'this.props.comment'
<Button
title='comment'
onPress={()=> console.log(this.props.comment,'comment')}>
</Button>
//But when I try to console.log `this.props.region` it gives me undefined
<Button
title='region'
onPress={()=> console.log(this.props.region,'region')}>
</Button>
function mapStateToProps(state) {
return {
region : state.region,
comment : state.comment,
}
}
function mapDispatchToProps(dispatch) {
return {
regionHandler : (state) => dispatch({ type: 'REGION', payload: state.region}),
commentHandler : (state) => dispatch({ type: 'COMMENT', payload: state.comment}),
}
}
App.js
const initialState = {
comment:'',
region:[],
}
const reducer = (state = initialState, action) => {
console.log(action);
switch (action.type)
{
case 'COMMENT':
return { comment: action.payload}
case 'REGION':
return { region: action.payload}
}
return state
}
const store = createStore(reducer)
Кажется, мой код вызывает только первый обработчик, который this.props.commentHandler(this.state)
, но не второй this.props.regionHandler(this.state)
.
Есть ли способ, которым я мог бы решить эту проблему? Любые советы или комментарии будут очень признательны!