나는 react-redux 및 redux-thunk와 함께 react-native를 사용하고 있습니다. 기본적으로 나는 Component
을 에 연결하여 어떤 정보를 dispatch
으로 수정합니다. 모든 작업이 동기식 인 것으로 보이지만 수정 후 다음 줄에 오래된 데이터가 표시됩니다.감속기 저장소 지정이 완료 될 때까지 어떻게 기다릴 수 있습니까?
//reducer
import {assign as _assign} from 'lodash-es';
let initialState = {name: '1'};
export default (state = initialState, action) => {
switch (action.type) {
case 'Project renamed':
return _assign({}, state, {name: action.data});
default:
return state;
}
};
//Component
import React, {Component} from 'react';
import {connect} from 'react-redux';
import Prompt from 'react-native-prompt';
class HomeScreen extends Component {
render() {
return <Prompt
onSubmit={() => {
this.props.onProjectRenamed('2');
console.log(this.props.currentProject.name) //Still get '1' here!!!
}}
/>;
}
}
const mapStateToProps = state => ({
currentProject: state.currentProject
});
const mapDispatchToProps = dispatch => ({
onProjectRenamed: (data) => dispatch({
type: 'Project renamed',
data: data
})
});
export default connect(mapStateToProps, mapDispatchToProps)(HomeScreen);
어떻게 새 this.props.currentProject.name
값을 얻을 수 있습니까?
오 물론 나는 그것을 가지고있다. 내 게시물의 오타. – JustLogin
@JustLogin 업데이트를 참조하십시오 – FuzzyTree
어떻게 작동합니까? 귀하의'onProjectRenamed'에있는 모든 것은 동기식으로 남아 있습니다 ('dispatch'을 먼저하고,'resolve'를 반환합니다). 'promise.resolve()'를 리턴하는 것은'store'가 수정 된 후에 만 트리거되는 이유는 무엇입니까? – JustLogin