我使用react-native与react-redux和redux-thunk。基本上我有一个Component
连接到store
它修改了它的一些信息与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')。为什么只有在'store'被修改后才返回Promise.resolve()'触发器? – JustLogin