React-JSONSchema 是一个用于构建表单的库,它根据 JSON Schema 来生成表单界面。要从 React-JSONSchema 表单中提取字段值,通常需要使用表单的 onChange
事件处理器或者 onSubmit
事件处理器来获取当前的表单数据。
onChange
事件处理器你可以在每个字段上设置 onChange
事件处理器,这样每当字段值发生变化时,你都可以获取到最新的值。
import React, { useState } from 'react';
import Form from 'react-jsonschema-form';
const schema = {
type: 'object',
properties: {
name: { type: 'string', title: 'Name' },
age: { type: 'number', title: 'Age' },
},
};
const MyForm = () => {
const [formData, setFormData] = useState({});
const handleChange = (e) => {
setFormData(e.formData);
};
return (
<Form
schema={schema}
onChange={handleChange}
/>
);
};
export default MyForm;
onSubmit
事件处理器另一种方法是在表单提交时获取所有字段的值。
import React from 'react';
import Form from 'react-jsonschema-form';
const schema = {
type: 'object',
properties: {
name: { type: 'string', title: 'Name' },
age: { type: 'number', title: 'Age' },
},
};
const MyForm = () => {
const handleSubmit = (e) => {
console.log(e.formData); // 这里包含了所有字段的值
};
return (
<Form
schema={schema}
onSubmit={handleSubmit}
/>
);
};
export default MyForm;
解决方法:在 formData
中,嵌套字段会以点分隔的形式存在,例如 user.name
。你可以直接通过这些键来访问值。
const formData = {
user: {
name: 'John Doe',
age: 30,
},
};
console.log(formData.user.name); // 输出 "John Doe"
解决方法:如果你的表单需要基于异步加载的数据来渲染,你可以在数据加载完成后更新状态,并重新渲染表单。
import React, { useState, useEffect } from 'react';
import Form from 'react-jsonschema-form';
const MyForm = () => {
const [schema, setSchema] = useState({});
const [formData, setFormData] = useState({});
useEffect(() => {
// 假设 fetchData 是一个异步函数,用于获取 JSON Schema
fetchData().then(data => setSchema(data));
}, []);
return (
<Form
schema={schema}
formData={formData}
onChange={setFormData}
/>
);
};
export default MyForm;
通过上述方法,你可以有效地从 React-JSONSchema 表单中提取和管理字段值。
领取专属 10元无门槛券
手把手带您无忧上云