现有内容管理系统是:
点击提交或保存后,之前的按钮还能点击:
需要实现:
点击后,不能再被点击
除非提示错误,比如网络断开了,提交返回失败等等
然后才能继续点击
看了看代码:
感觉是:
点击提交后,去把button的状态禁止掉,比如disabled之类的就好了
<Button type="primary" onClick={this.handleSubmit.bind(this, 'save')} style={{ marginLeft: 260 }}> 保存草稿 </Button>
不过看了看button的源码
export declare type ButtonProps = AnchorButtonProps | NativeButtonProps; export default class Button extends React.Component <ButtonProps, any> { static Group: typeof Group; static __ANT_BUTTON: boolean; static defaultProps: { prefixCls: string; loading: boolean; ghost: boolean; }; static propTypes: { type: any; shape: any; size: any; htmlType: any; onClick: any; loading: any; className: any; icon: any; }; timeout: number; delayTimeout: number; constructor(props: ButtonProps); componentDidMount(): void; componentWillReceiveProps(nextProps: ButtonProps): void; componentDidUpdate(): void; componentWillUnmount(): void; fixTwoCNChar(): void; handleClick: React.MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>; isNeedInserted(): boolean; render(): JSX.Element; }
貌似没有disable属性?
去找找
antd pro中的button
antd pro Button
好像就是添加disabled即可
然后是可以加上:
@Form.create() export default class ScriptCreate extends PureComponent { constructor(props) { super(props); this.state = { 。。。 isSubmitting: false, isDisableSubmit: false, }; } handleSubmit(operateMark) { const { speakers, contents, audioIDs } = this.state this.setState({ isSubmitting: true, isDisableSubmit: true, }) render() { <Button type="primary" loading={this.state.isSubmitting} disabled={this.state.isDisableSubmit} onClick={this.handleSubmit.bind(this, 'save')} style={{ marginLeft: 260 }}> 保存草稿 </Button> }
实现,点击后:
处于正在加载,且不能再点击:
但是有个问题:
正常的情况,倒是可以在http的request的fetch返回后,可以取消这2个变量,让按钮再次可以点击。
但是如果是出现异常,比如网络断开等,则此处的:
this.props.dispatch({ type: 'script/submitScript', payload: params, }).then(() => { this.props.dispatch(routerRedux.push('/script/script-list')); });
是没法返回exception的,没法告知此处的。
所以需要去解决:
【已解决】reactjs的Antd Pro中如何让网络异常出错时也有callback返回可以自己控制异常
转载请注明:在路上 » 【已解决】Antd Pro中点击提交后禁止再点击按钮