MyIcons.tsx
JavaScript
x
21
21
1
export const ICONCAR = () => (
2
<span className="svg-icon svg-icon-primary svg-icon-2x"><svg xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" width="24px" height="24px" viewBox="0 0 24 24" version="1.1">
3
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
4
<rect x="0" y="0" width="24" height="24"/>
5
<path d="M4.88230018,17.2353996 L13.2844582,0.431083506 C13.4820496,0.0359007077 13.9625881,-0.12427877 14.3577709,0.0733126292 C14.5125928,0.15072359 14.6381308,0.276261584 14.7155418,0.431083506 L23.1176998,17.2353996 C23.3152912,17.6305824 23.1551117,18.1111209 22.7599289,18.3087123 C22.5664522,18.4054506 22.3420471,18.4197165 22.1378777,18.3482572 L14,15.5 L5.86212227,18.3482572 C5.44509941,18.4942152 4.98871325,18.2744737 4.84275525,17.8574509 C4.77129597,17.6532815 4.78556182,17.4288764 4.88230018,17.2353996 Z" fill="#000000" fill-rule="nonzero" transform="translate(14.000087, 9.191034) rotate(-315.000000) translate(-14.000087, -9.191034) "/>
6
</g>
7
</svg></span>
8
);
9
10
export const ICONHOME = () => (
11
<span className="svg-icon svg-icon-primary svg-icon-2x"><svg xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" width="24px" height="24px" viewBox="0 0 24 24" version="1.1">
12
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
13
<rect x="0" y="0" width="24" height="24"/>
14
<path d="M15,3 L15.4502481,7.5024814 C15.4784917,7.78491722 15.7161555,8 16,8 C16.2838445,8 16.5215083,7.78491722 16.5497519,7.5024814 L17,3 L18,3 L18.4502481,7.5024814 C18.4784917,7.78491722 18.7161555,8 19,8 C19.2838445,8 19.5215083,7.78491722 19.5497519,7.5024814 L20,3 L21,3 L21,7.5 C21,9.43299662 19.4329966,11 17.5,11 C15.5670034,11 14,9.43299662 14,7.5 L14,3 L15,3 Z" fill="#000000"/>
15
<path d="M17.5,13 L17.5,13 C18.0610373,13 18.5243493,13.4382868 18.55547,13.9984604 L18.916795,20.5023095 C18.9602658,21.2847837 18.3611851,21.9543445 17.5787108,21.9978153 C17.5524991,21.9992715 17.5262521,22 17.5,22 L17.5,22 C16.7163192,22 16.0810203,21.3647011 16.0810203,20.5810203 C16.0810203,20.5547682 16.0817488,20.5285212 16.083205,20.5023095 L16.44453,13.9984604 C16.4756507,13.4382868 16.9389627,13 17.5,13 Z" fill="#000000" opacity="0.3"/>
16
<path d="M7.5,14 L7.5,14 C8.06209761,14 8.5273156,14.4370496 8.56237829,14.9980526 L8.90643257,20.5029211 C8.95497952,21.2796724 8.3646533,21.9487088 7.58790204,21.9972557 C7.55863704,21.9990848 7.52932209,22 7.5,22 L7.5,22 C6.72173313,22 6.09082317,21.36909 6.09082317,20.5908232 C6.09082317,20.5615011 6.09173837,20.5321861 6.09356743,20.5029211 L6.43762171,14.9980526 C6.4726844,14.4370496 6.93790239,14 7.5,14 Z" fill="#000000" opacity="0.3"/>
17
<path d="M7.5,12 C5.56700338,12 4,9.43299662 4,7.5 C4,5.56700338 5.56700338,3 7.5,3 C9.43299662,3 11,5.56700338 11,7.5 C11,9.43299662 9.43299662,12 7.5,12 Z M7.5095372,4.60103244 L7.56069005,9.94758244 C8.61891495,9.8578583 9.45855912,8.97981222 9.47749614,7.8949109 C9.49728809,6.76103086 8.63275447,4.70470991 7.5095372,4.60103244 Z" fill="#000000"/>
18
</g>
19
</svg></span>
20
);
21
MyFile.tsx
JavaScript
1
25
25
1
import { ICONCAR, ICONHOME } from "/icons/MyIcons";
2
3
export const TestScreen() => {
4
useEffect(() => {
5
6
}, []);
7
8
return
9
(
10
<>
11
<div>Title</div>
12
{response.data.map((x, index) => {
13
const IconComponent = x.iconName;
14
return (
15
<div>
16
<p>Test</p>
17
<IconComponent ></IconComponent>
18
</div>
19
);
20
})}
21
</>
22
)
23
24
}
25
Errors:
The tag <ICONCAR>
is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter
The tag <ICONHOME>
is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter.
i am getting the above error
if <ICONHOME></ICONHOME>
or <ICONCAR></ICONCAR>
works instead of <IconComponent ></IconComponent>
Advertisement
Answer
You need to do a mapping between sring and react component. Even tough the names may be equals it has to be done.
Here is an example:
JavaScript
1
33
33
1
import { ICONCAR, ICONHOME } from "/icons/MyIcons";
2
3
const iconMapping: Record<string, () => JSX.Element> = {
4
"ICONCAR": ICONCAR,
5
"ICONHOME": ICONHOME
6
};
7
8
export const TestScreen() => {
9
useEffect(() => {
10
11
}, []);
12
13
return
14
(
15
<>
16
<div>Title</div>
17
{response.data.map((x, index) => {
18
const IconComponent = iconMapping[x.iconName];
19
if (IconComponent === undefined) {
20
//handle it by assigning it to an icon
21
}
22
return (
23
<div>
24
<p>Test</p>
25
<IconComponent ></IconComponent>
26
</div>
27
);
28
})}
29
</>
30
)
31
32
}
33