我有多个反应-本机组件(超过100),每一个是不同的。更准确地说,每个组件实际上都是一个react本机svg组件,如下所示
import * as React from "react";
import Svg, { Circle, Path } from "react-native-svg";
function SvgAlert(props) {
return (
<Svg
width={24}
height={24}
fill="none"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<Circle cx={12} cy={16.75} r={1.25} fill="#000" />
<Path fill="#000" d="M11 6h2v8h-2z" />
</Svg>
);
}
export default SvgAlert;我想从组件目录导入所有这些svgComponents,并在滚动视图中呈现它们。
<ScrollView>
<SvgComp1>
<SvgComp2>
.
.
<SvgComp100>
<ScrollView>我是否可以通过这些组件或其他方法来映射这些组件,以节省一个一个地导入每个组件并手动呈现它的繁琐工作(就像组件或其他组件的映射)?
<ScrollView>
{
components.map(Each=>{
return <Each/>
})
}
<ScrollView>发布于 2021-07-30 10:10:08
您可以只导入每个svg一次,然后重用它,导入包含所有svg的数组。类似于:
AllSvgs.js
import SVG1 from '...';
import SVG2 from '...';
import SVG3 from '...';
...
export default SVGsArray = [SVG1, SVG2, SVG3, ...];然后在一个组件中:
import SVGsArray from '../path/to/AllSvgs.js';
...
<ScrollView>
{
SVGsArray.map(Each)=>{
return <Each/>
}
<ScrollView>发布于 2021-07-30 10:12:46
我所做的工作有点不同,我们可以将所有组件导入到单个文件中,并以对象格式存储它们,这样我们就可以访问您想访问的任何地方,例如对象。
import A from 'path/to/aComponent';
import B from 'path/to/bComponent';
import C from 'path/to/cComponent';
import D from 'path/to/dComponent';
export const SVGComponents = {
aComponent: A,
bComponent: B,
cComponent: C,
dComponent: D,
}当您尝试呈现时,尝试从对象读取并呈现它。
import SVGComponents from 'path/to/SVGComponents';
<ScrollView>
{
components.map(name)=>{
return <SVGComponents[name] />
}
<ScrollView>您可以将这些组件存储在您需要的任何导入anyWhere中,但您确实具有常量的名称。
https://stackoverflow.com/questions/68589071
复制相似问题