该InputField
&Button
是进入一个表单创建一个表单自定义组件。我的问题是如何将数据发送回表单,以便在单击按钮时可以使用数据(用户名和密码)在表单上触发Ajax:
export default auth.authApi(
class SignUpViaEmail extends Component{
constructor(props){
super(props);
this.state = {
email : "",
password : ""
};
this.storeEmail = this.storeEmail.bind( this );
this.storePassword = this.storePassword.bind( this );
}
storeEmail(e){
this.setState({ email : e.target.value });
}
storePassword(e){
this.setState({ password : e.target.value });
}
handleSignUp(){
this.props.handleSignUp(this.state);
}
render(){
return(
<div className="pageContainer">
<form action="" method="post">
<InputField labelClass = "label"
labelText = "Username"
inputId = "signUp_username"
inputType = "email"
inputPlaceholder = "registered email"
inputClass = "input" />
<Button btnClass = "btnClass"
btnLabel = "Submit"
onClickEvent = { handleSignUp } />
</form>
</div>
);
}
}
);
还是不建议这样做?我不应该在表单中创建自定义子组件?
子组件=> InputField
import React,
{ Component } from "react";
export class InputField extends Component{
constructor( props ){
super( props );
this.state = {
value : ""
};
this.onUserInput = this.onUserInput.bind( this );
}
onUserInput( e ){
this.setState({ value : e.target.value });
this.props.storeInParentState({[ this.props.inputType ] : e.target.value });
}
render(){
return <div className = "">
<label htmlFor = {this.props.inputId}
className = {this.props.labelClass}>
{this.props.labelText}
</label>
<input id = {this.props.inputId}
type = {this.props.inputType}
onChange = {this.onUserInput} />
<span className = {this.props.validationClass}>
{ this.props.validationNotice }
</span>
</div>;
}
}
错误:我e.target is undefined
在父storeEmail函数上收到错误。
React的单向数据绑定模型意味着, 除非明确允许,否则
子组件无法将值发送回父组件。React的方法是将回调传递给子组件(请参阅Facebook的“
Forms”指南
)。
class Parent extends Component {
constructor() {
this.state = {
value: ''
};
}
//...
handleChangeValue = e => this.setState({value: e.target.value});
//...
render() {
return (
<Child
value={this.state.value}
onChangeValue={this.handleChangeValue}
/>
);
}
}
class Child extends Component {
//...
render() {
return (
<input
type="text"
value={this.props.value}
onChange={this.props.onChangeValue}
/>
);
}
}
请注意, 父组件处理状态,而子组件仅处理display
。Facebook的“提升状态”指南是学习如何执行此操作的好资源。
这样, 所有数据都位于父组件中(处于状态),而子组件仅被赋予一种更新数据的方式(回调作为props传递)
。现在,您的问题已解决:父组件可以访问所需的所有数据(因为数据存储在状态中),但是子组件负责将数据绑定到它们自己的单独元素(例如<input>
标签)。
问题内容: 在React中,我有类似的文件 parent.js 包含文本框和按钮 child.js 包含P标签 App.js 包含父组件和子组件 问题 将“父级”上的“文本框”值传递给子级,并将其显示在子级标记中。 完整代码 堆叠 问题答案: 更新了示例以将数据传递给子组件。 https://stackblitz.com/edit/react- trmj9i?file=child.js 在下面添加
问题内容: 我正在寻找最简单的解决方案,以将数据从子组件传递给他的父组件。 我听说过使用上下文,传递槽属性或更新道具,但我不知道哪个是最佳解决方案。 我正在建立一个管理界面,其中的一个PageComponent包含一个ChildComponent以及一个可以在其中选择多行的表格。我想向我的父级PageComponent发送我在ChildComponent中选择的行数。 像这样: PageCompo
我正在寻找将数据从子组件传递给其父组件的最简单解决方案。 我听说过使用上下文、传递属性或更新道具,但我不知道哪一个是最好的解决方案。 我正在构建一个管理界面,其中包含一个PageComponent,其中包含一个ChildComponent表,我可以在其中选择多行。我想把我在ChildComponent中选择的行数发送给我的父PageComponent。 诸如此类: 页面组件: ChildCompo
因此,我想向附加到组件的任何子级添加某些样式。假设父组件称为,子组件称为。在我正在尝试以下方法:- 上述方法对我不起作用。我想知道为什么。还有没有一种方法可以让我在孩子们之间绘制地图,并将他们包装在一个新的组件中?像这样的东西;
我一直在尝试从react中的子组件中检索我正在组装的应用程序的值。我想我在这里犯了一个非常简单的错误。我最初在这里问了一个相关的问题: 响应已单击按钮的读取值 现在我的代码是这样的: 一个pp.js Match.js 当我使用以下命令单击ListGroup项目时,我正在尝试访问该项目的值: 但似乎无法让它发挥作用。可能一直盯着这条路看太久了。感谢你们的帮助。
我正在制作学生姓名及其ID的列表。每当呈现列表元素时,父类都会调用子类。 我试图在列表下放置一个提交按钮,返回检查学生姓名的结果,一个或多个。我不明白的是,如何将学生名的值从孩子组件返回到家长,并一直返回到层次结构的顶部,并存储在某种变量中。有没有办法返回值给父组件,即调用的组件?