vite+react 函数组件 我有这样的 一块数据 [ 0:{name: '搜索框', type: 'search', params: {…}, style: {…}}, 1:{name: '图片轮播', type: 'banner', style: {…}, data: Array(2)}, 2:{name: '店铺公告', type: 'notice', params: {…}, style: {…}}, 3:{name: '导航组', type: 'navBar', style: {…}, data: Array(4)}, 4:{name: '图片', type: 'image', style: {…}, data: Array(3)}, 5:{name: '图片', type: 'image', style: {…}, data: Array(1)}, 6:{name: '图片', type: 'image', style: {…}, data: Array(1)}, 7:{name: '图片橱窗', type: 'window', style: {…}, data: Array(2), dataNum: 4}, 8:{name: '图片', type: 'image', style: {…}, data: Array(1)}, 9:{name: '商品组', type: 'goods', params: {…}, style: {…}, data: Array(10)}, ] 我想让根据这块数据 生成组件
时间: 2024-02-12 22:04:34 浏览: 78
可以使用数组的map方法遍历数据,根据type属性的不同来渲染对应的组件。示例代码如下:
```jsx
import React from 'react';
const components = {
search: ({ params, style }) => (
<div style={style}>这里是搜索框组件,参数为{JSON.stringify(params)}</div>
),
banner: ({ data, style }) => (
<div style={style}>
这里是轮播图组件,数据为{JSON.stringify(data)}
</div>
),
notice: ({ params, style }) => (
<div style={style}>这里是公告组件,参数为{JSON.stringify(params)}</div>
),
navBar: ({ data, style }) => (
<div style={style}>这里是导航组件,数据为{JSON.stringify(data)}</div>
),
image: ({ data, style }) => (
<div style={style}>这里是图片组件,数据为{JSON.stringify(data)}</div>
),
window: ({ data, style, dataNum }) => (
<div style={style}>
这里是图片橱窗组件,数据为{JSON.stringify(data)}, 数据数量为{dataNum}
</div>
),
goods: ({ params, style, data }) => (
<div style={style}>
这里是商品组件,参数为{JSON.stringify(params)}, 数据为{JSON.stringify(data)}
</div>
),
};
const ComponentGenerator = ({ data }) => {
return (
<>
{data.map((item, index) => {
const Component = components[item.type];
if (!Component) {
return null;
}
return <Component key={index} {...item} />;
})}
</>
);
};
export default ComponentGenerator;
```
在使用时,只需要将数据传入`ComponentGenerator`组件即可:
```jsx
<ComponentGenerator data={yourData} />
```
阅读全文