javascript - 如何克隆 React 组件并保存其状态
问题描述
我需要克隆组件并将其插入到当前组件中。我能够做到这一点,但是当我克隆组件时,前一个组件中的值被清除。我需要保留前一个组件中的值,并将新克隆组件中的值留空。我怎样才能做到这一点?
import FirstBlocks from './FirstBlocks';
import SecondBlock from './SecondBlock';
import { useState } from 'react';
const formBlocks = [
{
Component: FirstBlock,
props: {
title: 'first block',
},
id: 1,
},
{
Component: SecondBlock,
props: {
title: 'second block',
},
id: 2,
},
];
const Form = () => {
const [formItems, setFormItems] = useState(formBlocks);
return (
<>
{formItems.map(({ Component, props, id }, index) => {
const cloneBlock = () =>
setFormItems((formItems) => {
const newFormItems = [...formItems];
newFormItems.splice(index + 1, 0, {
Component,
props,
id: Date.now(),
});
return newFormItems;
});
return <Component {...props} key={id} cloneBlock={cloneBlock} />;
})}
</>
);
};
export default Form;
解决方案
推荐阅读
- android - 错误 SQLiteOpenHelper:没有这样的列:“SELECT event, time, date, month, year FROM eventstable WHERE month=? and year=year”中的年份
- javascript - 如何使用左侧的复选框从地图中删除标记?
- mysql - 按 FIELD 和子查询排序?
- javascript - 在元素定义上绑定属性字典
- c++ - “不应忽略的无效值”尝试对数组进行排序时
- sql-server - 从 Oracle 到 SQL 2019 的外部表
- javascript - D3 v3 分组条形图,通过刷涂进行平移和缩放
- javascript - 使用 Javascript 围绕中点旋转 svg 箭头
- r - R用非NA值的增量/减量替换NA
- reactjs - 如何将 React 类组件字段转换为钩子