【发布时间】:2021-12-24 21:39:40
【问题描述】:
我在 react 中使用了一个 redux 连接的组件。只是在调用 handleSubmit onClick 处理程序后呈现按钮时遇到问题。它仅在我刷新页面后出现,这可能表明存在异步问题。所以在这个组件中,我有一个名为 status 的 redux 状态属性,并将它映射到我本地状态的 props。我听说当状态或道具发生变化时,就是组件重新渲染的时候。所以我想做的是在我的渲染方法中,如果 this.state.showButton 是真的,那么这个按钮就会显示出来。然而它没有。我还控制台记录了 this.state.showButton,确实是这样。
但是按钮不存在。我做了以下事情:
class VerificationForm extends React.Component {
constructor(props) {
super(props);
this.state = {
formError: false,
showModal: false,
showButton: false
};
}
handleSubmit = (e) => {
e.preventDefault();
this.setState({
formError: showFormError
});
verifyLevelOne()
.then((data) => {
const { status } = this.props;
const verified = status === 'VERIFIED';
this.setState({
showButton: verified
}, () => {
actions.showSubmissionNotification(data);
});
console.log('Hereeeeee', this.state.showButton);
});
}
render() {
const {
classes, actions, status
} = this.props;
const {
formError, showModal
} = this.state;
return (
<div>
<form onSubmit={this.handleSubmit} autoComplete="off">
<Grid className={classes.container} container direction="column" alignItems="center" xs={12}>
<Grid container direction="column" xs={11}>
<span style={{ display: 'flex', justifyContent: 'space-around' }}>
<Button fullWidth onClick={this.handleSubmit} type="submit" variant="contained" color="primary">Submit Information</Button>
{ this.state.showButton && <Button onClick={this.handleShowModal} variant="contained" color="primary">Proceed</Button> }
</span>
</Grid>
</Grid>
</form>
</div>
);
}
}
function mapStateToProps(state) {
return {
status: state.global.verification.status,
};
}
function mapDispatchToProps(dispatch) {
return {
actions: {
...bindActionCreators({
showNotification,
showSubmissionNotification,
}, dispatch)
}
};
}
const base = withRouter((withStyles(styles)(VerificationForm)));
export default connect(mapStateToProps, mapDispatchToProps)(base);
【问题讨论】:
标签: javascript asynchronous redux react-redux callback