reactjs - 反应表单 onSubmit 不起作用。通过 Context API 传递的方法
问题描述
通过 Context Api 传递的方法,在按钮 onClick 方法(在同一表单内)内工作正常,但在表单 onSubmit 方法内不起作用。
gdpr.js
render() {
return (
<MyContext.Consumer>
{(context) => (
<div>
<form onSubmit={context.onSubmitGdpr}>
<FormattedMessage id='app.terms'/>
<div>
<label className="container"><strong><FormattedMessage id={"app.terms.agree"}/></strong>
<input type="checkbox" checked={this.state.agree} onChange={this.onChangeHandler}/>
</label>
<Link to={context.state.nextStageAfterGDPR ? context.state.nextStageAfterGDPR : "#"}>
<button disabled={!this.state.agree}><FormattedMessage id='app.buttons.submit'/>
</button>
</Link>
</div>
</form>
</div>
)
}
</MyContext.Consumer>
)
}
export default Gdpr
MyProvider.js
通过 Context API 提供者传递的方法是...
onSubmitGdpr = (e) => {
e.preventDefault()
fetch("/api/v1/gdpr")
.then(res=> res.json())
.then(data => { this.setState({nextStageAfterGDPR: "./camera-intro"})
})
.catch(error=>console.log(error))
}
MyProvider.js 继续...
render() {
return (
<MyContext.Provider value={{
state: this.state,
onSubmitStart: this.onSubmitStart,
onSubmitGdpr: this.onSubmitGdpr
}}>
{this.props.children}
</MyContext.Provider>
)
}
解决方案
推荐阅读
- node.js - Express req.query 适用于 GET 但不适用于 POST
- javascript - 关闭 jquery 模态
- java - 通过 java ServerSocket 连接到“在线”服务器
- javascript - 寻求有关创建将 Google 帐户与我的应用程序关联的方法的体面文档
- nginx - 詹金斯:无法访问此站点
- python - 基于多个过滤条件在 Pandas 数据框列中获取唯一值的 Pythonic 方法
- laravel - 作曲家安装
- amazon-web-services - 为什么在 aws ec2 上安装 tidy linter 时出现无包错误
- python - 在 Python GUI 应用程序中没有足够的值来解包
- vb.net - 如何调整 RichTextBox 中的图像大小?