当用户每次单击form
按钮时可以添加新输入时,我就有了add field
标记。还在输入附近出现edit
按钮。单击edit
按钮,输入应消失,而不是显示edit
文本。
问题:当我在add fields
按钮上单击2次,然后单击表单中的edit
按钮之一时,两种形式都消失了,而不是在edit
上出现了两种形式的文本。
问题:如何解决上述问题,当我单击编辑按钮之一时,该部分应变为edit
文本,但其余部分仍应作为输入?
const Demo = () => {
const [editF, setEdit] = useState(false);
const onFinish = values => {
console.log("Received values of form:", values);
setEdit(true);
};
const edit = () => {
setEdit(true);
};
return (
<Form name="dynamic_form_nest_item" onFinish={onFinish} autoComplete="off">
<Form.List name="users">
{(fields, { add, remove }) => {
return (
<div>
{fields.map(field =>
editF === false ? (
<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
{...field}
name={[field.name, "last"]}
fieldKey={[field.fieldKey, "last"]}
rules={[{ required: true, message: "Missing last name" }]}
>
<Input placeholder="Last Name" />
</Form.Item>
<button onClick={edit}>edit</button>
</Space>
) : (
"edit"
)
)}
<Form.Item>
<Button
type="dashed"
onClick={() => {
add();
}}
block
>
<PlusOutlined /> Add field
</Button>
</Form.Item>
</div>
);
}}
</Form.List>
<Form.Item>
<Button type="primary" htmlType="submit">
Submit
</Button>
</Form.Item>
</Form>
演示:https://codesandbox.io/s/priceless-monad-kzjbe?file=/index.js:719-739
最佳答案
您的代码具有一个称为editF
的状态变量,并且自从您声明代码以来,每个变量都依赖于它:editF === false ? (....):edit
因此,一旦editF
为false,所有字段都会消失。
尝试使每个字段的 bool(boolean) 类型变量为列表,然后将其映射到您拥有的字段数及其编辑/不编辑状态。
关于javascript - 使用reactjs将数据保存为表单,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62691684/