javascript - React Js 中的分组输入
问题描述
我在我的反应应用程序中使用蚂蚁设计。我有下一个表格:
const Demo = () => {
const onFinish = (values) => {
console.log('Success:', values);
};
const onFinishFailed = (errorInfo) => {
console.log('Failed:', errorInfo);
};
return (
<Form
{...layout}
name="basic"
initialValues={{
remember: true,
}}
onFinish={onFinish}
onFinishFailed={onFinishFailed}
>
<Form.Item
label="age"
name="age"
>
<Input />
</Form.Item>
<Form.Item
label="name"
name="name"
>
<Input />
</Form.Item>
<Form.Item
label="friends"
name="friends"
>
<Input />
</Form.Item>
<Form.Item {...tailLayout}>
<Button type="primary" htmlType="submit">
Submit
</Button>
</Form.Item>
</Form>
);
};
现在,当我提交表单时,我得到一个包含所有这些输入名称的对象:{name: 'test', age: 15, friends: 5}
我想要另一个数据输出,如下所示:
user: [{
meta: {
age: 15,
name: 'test'
},
other: {
friends: 5
}
}]
如何使用我的代码获取最后一个输出?
演示:https ://codesandbox.io/s/basic-usage-antd4162-forked-44vq4?file=/index.js
解决方案
您可以选择使用保存状态的局部变量。
import React,{useEffect, useState} from "react";
import ReactDOM from "react-dom";
import "antd/dist/antd.css";
import "./index.css";
import { Form, Input, Button, Checkbox } from "antd";
const layout = {
labelCol: {
span: 8
},
wrapperCol: {
span: 16
}
};
const tailLayout = {
wrapperCol: {
offset: 8,
span: 16
}
};
const Demo = () => {
const [array,setArray]=useState([])
useEffect(()=>{
console.log({array})
},[array.length])
const onFinish = (values) => {
console.log("Success:", values);
let other = {friends:values.friends}
delete values.friends
let temp_arr = [...array]
temp_arr.push({meta:values, other})
setArray(temp_arr)
};
const onFinishFailed = (errorInfo) => {
console.log("Failed:", errorInfo);
};
return (
<Form
{...layout}
name="basic"
initialValues={{
remember: true
}}
onFinish={onFinish}
onFinishFailed={onFinishFailed}
>
<Form.Item label="age" name="age">
<Input />
</Form.Item>
<Form.Item label="name" name="name">
<Input />
</Form.Item>
<Form.Item label="friends" name="friends">
<Input />
</Form.Item>
<Form.Item {...tailLayout}>
<Button type="primary" htmlType="submit">
Submit
</Button>
</Form.Item>
</Form>
);
};
ReactDOM.render(<Demo />, document.getElementById("container"));
推荐阅读
- gnu-make - 如何根据条件的输出执行不同的配方?
- angular - Angular8 PrimeNG 反应形式的下拉菜单 - 初始值
- bash - 如何从bash中的随机子域中检索主域
- java - 无法使用特定配置文件运行 Spring Boot JAR 文件
- latex - 如何删除长表中的特定垂直线
- angular - 听 Angular 事件点击 webbrowser
- ruby-on-rails - 如何为在 Rails 5 中调用邮件程序的方法编写 rspec 模拟
- javascript - React.js 路由确切路径不正常
- botframework - 通过 Postman 与您的 microsoft bot 框架聊天
- c# - 如何在 ASP.NET 中发送 PUT 和 DELETE 表单?