【发布时间】:2019-11-21 17:56:01
【问题描述】:
我是 React 和 Javascript 的新手。
我正在尝试让用户填写一份描述“暴民”应该是什么样子的表格。当用户点击提交时,我希望handleSubmit()(通过父级传入)修改父级的状态,这是一个对象。但是,这种行为并没有发生。
这里是父组件,叫做 App。
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
mob: new Mob("", "")
};
this.handleSubmit = this.handleSubmit.bind(this);
}
handleSubmit(event) {
event.preventDefault();
alert("A name was submitted: " + this.state.vnum + " event value: " + event.state.vnum);
const newMob = new Mob(event.state.vnum, event.state.shortDesc);
this.setState({
mob: newMob
});
}
render() {
return (
<div>
<MobForm mob={this.state.mob} onSubmit={() => this.handleSubmit} />
{console.log("parsed mob vnum: " + this.state.mob.vnum)}
</div>
);
}
}
子组件,称为 MobForm
class MobForm extends React.Component {
render() {
return (
<div>
<form onSubmit={this.props.onSubmit}>
<CreateStringInputField
name="vnum"
label="vnum:"
/>
<CreateStringInputField
name="shortDesc"
label="Short Desc:"
/>
<input type="submit" value="Submit" />
</form>
{console.log(this.state)}
</div>
);
}
}
谁在打电话CreateStringInputField()
function CreateStringInputField(props) {
return (
<div name="row">
<label>
<b>{props.label}</b>
<br />
<input
type="text"
name={props.name}
label={props.label}
/>
</label>
</div>
);
}
而且,如果重要的话,这就是“暴民”的样子。
class Mob {
constructor(vnum, shortDesc) {
this.vnum = vnum;
this.shortDesc = shortDesc;
};
}
我希望看到{console.log("parsed mob vnum: " + this.state.mob.vnum)} 打印出用户输入的 vnum。相反,我什么也没看到。我怎样才能达到这个预期的输出?
【问题讨论】:
标签: javascript reactjs