等待调度完成以获取状态

时间:2021-01-24 02:15:03

标签: reactjs redux react-redux

当我打开屏幕时,我想调度一个“编辑”操作,该操作通过其 id 查找项目并使用找到的信息更改状态属性,然后当它完成时,我想用这个打开屏幕信息。我尝试在 Constructor 上调度并从 ComponentDidMount 设置状态,但它仅在我重新加载组件时出现。 我注意到的另一件事是,当我在渲染方法上发出警报时,我可以看到数组,但是当我将它发送到 'EditableList' 组件时,它没有显示。我需要进行异步调度吗?

class Observation extends Component {
constructor(props) {
    super(props);
    this.state = {
        obs: [],
        get: false
    }
    const { edit, route} = this.props;
    edit(route.params.item.id);
}
onChange(list) {
    this.setState({obs: list})
}
componentDidMount() {
    this.setState({obs: this.props.Obs})
}
render() {
    const {route, add, Obs, loading} = this.props;
    return (
        <View style={{flex: 1, paddingTop: StatusBar.currentHeight + 10, backgroundColor: '#FFD618'}}>
            <Text style={{fontSize: 36, padding: 20}}>Observações</Text>
            <EditableList style={{ width: '100%'}} list={this.state.obs} onListChange={this.onChange.bind(this)}/>
            <TouchableOpacity style={styles.button} onPress={() => add({...route.params.item, obs: this.state.obs})}>
                <View>
                    <Text style={{color: 'white'}}>Adicionar</Text>
                </View>
            </TouchableOpacity>
        </View>
    );
}
}
const mapStateToProps = state => ({
    Obs: state.cart.Obs
});
const mapDispatchToProps = dispatch => ({
    add: item => dispatch(Add(item)),
    edit: e => dispatch(edit_obs(e))
})
export default connect(mapStateToProps, mapDispatchToProps)(Observation);

0 个答案:

没有答案