reactjs - 单击按钮获取值
问题描述
在我的应用程序中,我尝试从表单标签中获取值。这是我要输出值的组件:
import React, { useState } from "react";
import { Form, Input, Button, Space } from "antd";
import { PlusOutlined } from "@ant-design/icons";
const Inner = props => {
const [formVal, setFormVal] = useState([]);
const [defaultMode, setDefaultMode] = useState(true);
const onFinish = values => {
setFormVal(values);
console.log("Received values of form:", values);
};
const setFieldOnEdit = index => () => {
console.log("index", index);
};
return (
<Form.List onFinish={onFinish} name={[props.fieldKey, "inner"]}>
{(fields, { add, remove }) => {
return (
<div>
{fields.map((field, index) => (
<Space
key={field.key}
style={{ display: "flex", marginBottom: 8 }}
align="start"
>
<Form.Item
{...field}
name={[field.name, "first"]}
fieldKey={[field.fieldKey, "first"]}
rules={[{ required: true, message: "Missing first name" }]}
>
<Input placeholder="First Name" />
</Form.Item>
<Form.Item>
<Button type="primary" htmlType="submit">
Submit inner{setFieldOnEdit(index)}
</Button>
</Form.Item>
</Space>
))}
<Form.Item>
<Button
type="dashed"
onClick={() => {
add();
}}
block
>
<PlusOutlined /> Add field to inner
</Button>
</Form.Item>
</div>
);
}}
</Form.List>
);
};
export default Inner;
现在,当我单击时,表单中的提交按钮可以正常工作:
<Button type="primary" htmlType="submit">
Submit inner{setFieldOnEdit(index)}
</Button>
但我想,当我点击这个按钮时,触发和setFieldOnEdit(index)
运行,并进入:
const setFieldOnEdit = index => () => {
console.log("index", index); //here i want to get the index when i click on the button
};
……那个index
。但是当我点击按钮时,我只是提交表单,而不是触发setFieldOnEdit()
功能。
如何触发函数并获取上述函数内部的索引?
演示:https ://codesandbox.io/s/aged-architecture-0r2si?file=/InnerForm.js
解决方案
您可以setFieldOnEdit(index)
使用 Buttons 的onClick
属性调用:
<Button type="primary" htmlType="submit" onClick={setFieldOnEdit(index)}>
Submit inner
</Button>
推荐阅读
- rust - 如何添加绑定到引用私有类型的公共类型的特征?
- android - 错误 java.lang.IndexOutOfBoundsException: setSpan (5 ... 5) 结束于长度 0
- java - JLayeredPane 无法正确显示
- android-studio - 如何安装 Android Studio 3.5 Canary 12?
- anaconda - 无法激活确实存在的 anaconda venv
- vb.net - 执行存储过程时如何在vb.net编码中放入进度条
- javascript - 我如何将 URL 添加到数组中的对象
- python - 如何在使用 Glob 读取多个 CSV 文件时将标签传递给连接的数据框以指定哪些数据来自哪个 CSV 文件
- c - 使用函数调用其他处理链表的函数的语法?
- node.js - 为什么 CORS 策略会阻止我的 ip 访问我的 API?