反应 jsonschema 访问 formData
React jsonschema access formData
我是一个完全的 React 初学者,所以很多简单的语法让我感到困惑。我有一个 jsonschema 表单,可以在我的 create-react-app 中完美呈现,但我不明白在提交表单时如何从表单中获取数据。
这是我的 App 组件(它呈现我发誓)。
class App extends Component {
App(){
}
render() {
return (
<div className="App">
<div>
<div className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h2>Welcome to React</h2>
</div>
<p className="App-intro">
To get started, edit <code>src/App.js</code> and save to reload.
</p>
</div>
<div class = "json">
<Form schema={schema}
onChange={log("changed")}
onSubmit={onSubmit}
onError={log("errors")} />
</div>
</div>
);
}
}
以下是我代码的非 JSX 部分。
const schema = {
type: "object",
properties: {
summary: {type: "string"},
location: {type: "string"},
description: {type: "string"},
sendNotifications: {type: "boolean", default: false},
...and so forth...
}
const onSubmit = ({formData}) => console.log("yay I'm valid!");
如果我保持原样,当我点击提交时什么也不会发生。如果我将 () 大括号添加到渲染方法中的 onSubmit 调用,它会产生错误 "cannot read property formData of undefined"。我几乎对道具一无所知,或者道具应该如何定义。我将不胜感激任何帮助!谢谢!
使用 class
组件时,您需要使用 this
关键字 onSubmit={this.onSubmit}
.
来引用处理程序
作为旁注,您应该更改构造函数的编写方式。
查看代码的工作示例:
const Form = JSONSchemaForm.default;
class App extends React.Component {
constructor(props){
super(props);
}
schema = {
type: "object",
properties: {
summary: {type: "string"},
location: {type: "string"},
description: {type: "string"},
sendNotifications: {type: "boolean", default: false},
}
}
onSubmit = ({formData}) => console.log("yay I'm valid!");
render() {
return (
<div className="App">
<div>
<div className="App-header">
<img src="" className="App-logo" alt="logo" />
<h2>Welcome to React</h2>
</div>
</div>
<div class = "json">
<Form schema={this.schema}
onSubmit={this.onSubmit}
/>
</div>
</div>
);
}
}
ReactDOM.render(<App/>, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<script src="https://unpkg.com/react-jsonschema-form/dist/react-jsonschema-form.js"></script>
<div id="root"></div>
我是一个完全的 React 初学者,所以很多简单的语法让我感到困惑。我有一个 jsonschema 表单,可以在我的 create-react-app 中完美呈现,但我不明白在提交表单时如何从表单中获取数据。
这是我的 App 组件(它呈现我发誓)。
class App extends Component {
App(){
}
render() {
return (
<div className="App">
<div>
<div className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h2>Welcome to React</h2>
</div>
<p className="App-intro">
To get started, edit <code>src/App.js</code> and save to reload.
</p>
</div>
<div class = "json">
<Form schema={schema}
onChange={log("changed")}
onSubmit={onSubmit}
onError={log("errors")} />
</div>
</div>
);
}
}
以下是我代码的非 JSX 部分。
const schema = {
type: "object",
properties: {
summary: {type: "string"},
location: {type: "string"},
description: {type: "string"},
sendNotifications: {type: "boolean", default: false},
...and so forth...
}
const onSubmit = ({formData}) => console.log("yay I'm valid!");
如果我保持原样,当我点击提交时什么也不会发生。如果我将 () 大括号添加到渲染方法中的 onSubmit 调用,它会产生错误 "cannot read property formData of undefined"。我几乎对道具一无所知,或者道具应该如何定义。我将不胜感激任何帮助!谢谢!
使用 class
组件时,您需要使用 this
关键字 onSubmit={this.onSubmit}
.
来引用处理程序
作为旁注,您应该更改构造函数的编写方式。
查看代码的工作示例:
const Form = JSONSchemaForm.default;
class App extends React.Component {
constructor(props){
super(props);
}
schema = {
type: "object",
properties: {
summary: {type: "string"},
location: {type: "string"},
description: {type: "string"},
sendNotifications: {type: "boolean", default: false},
}
}
onSubmit = ({formData}) => console.log("yay I'm valid!");
render() {
return (
<div className="App">
<div>
<div className="App-header">
<img src="" className="App-logo" alt="logo" />
<h2>Welcome to React</h2>
</div>
</div>
<div class = "json">
<Form schema={this.schema}
onSubmit={this.onSubmit}
/>
</div>
</div>
);
}
}
ReactDOM.render(<App/>, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<script src="https://unpkg.com/react-jsonschema-form/dist/react-jsonschema-form.js"></script>
<div id="root"></div>