【发布时间】:2016-10-06 20:07:29
【问题描述】:
我在 React 中创建了一个 <Button /> 组件,它抽象出了我的应用程序中的一些样式。我在两种不同的情况下使用它——一种是提交登录表单,另一种是导航到注册页面(未来可能还有其他情况)。
我试图弄清楚如何将事件处理程序从父组件传递到<Button />。我想为登录表单调用onSubmit 处理程序,但为导航按钮调用onClick 处理程序。这可能吗?
我试过这样调用组件:
<Button text={callToAction} style={styles.callToActionButton} onClick={() => FlowRouter.go("Auth")}/>
<Button text="Go!" style={styles.registerButton} onSubmit={() => this.register(this.state.user, this.state.password)}/>
我也试过删除箭头函数,它只是在组件加载时执行函数:
// executes event handlers on page load
<Button text={callToAction} style={styles.callToActionButton} onClick={FlowRouter.go("Auth")}/>
<Button text="Go!" style={styles.registerButton} onSubmit={this.register(this.state.user, this.state.password)}/>
【问题讨论】:
-
只需
{this.register}即可,只需在该注册方法中获取用户的状态(无需作为参数传递) -
你能扩展一下吗?我也没有运气让 onClick 事件处理程序与其他组件一起工作。
-
嗯,finalfreq 已经给出了一个很好的例子。为了提供更多细节,看看父组件是如何实现的会很方便。在他的情况下,您将事件处理程序作为道具传递给子组件,然后子组件调用父控件上的函数
标签: javascript reactjs