迭代 Map 的值以呈现所有图标组件但不起作用但是呈现一个图标有效
Iterate over values of Map to render all icon components but don't work however render one icon works
我正在开发react-native项目。
我有一个函数可以将图标元数据设置为 Map
:
export function getIconsMetadata() {
// a map of icons' metadata
const iconsMetadata = new Map();
...
// code to set icon metadata to the map
iconsMetadata.set("foo", "Foo");
iconsMetadata.set("bar", "Bar");
...
return iconsMetadata;
}
还有一个函数return是基于图标类型的实际图标组件(即iconsMetadata
的值保存图标类型):
export function getMyIcon(iconType) {
switch (iconType) {
case 'Foo':
return <Foo />;
case 'Bar':
return <Bar />;
...
}
在我的屏幕上,我有一个功能可以通过迭代上述图标元数据的值来显示图标组件 Map
,并尝试呈现每个图标组件:
export const MyScreen() => {
const showIcons = () => {
[...getIconsMetadata().values()].map((iconType, index) => {
const iconComponent = getMyIcon(iconType);
return <View key={index}>
{iconComponent}
</View>;
});
};
return (
<View style={styles.container}>
{/*I call the showIcons function here to render icons*/}
{showIcons()}
</View>
)
}
问题是屏幕上没有显示图标。
但是如果我直接 return 一个 图标组件在我的屏幕上:
export const MyScreen = () => {
...
const showOneIcon = () => {
return <View>
<Foo />
</View>;
});
}
return (
<View style={styles.container}>
{/*I show one icon*/}
{showOneIcon()}
</View>
)
}
<Foo />
图标组件在屏幕上渲染成功。
那么,为什么迭代地图以显示所有图标不起作用?
问题是您没有 return 从 showIcons 中获取任何内容。要么从那里删除 { }
const showIcons = () =>
[...getIconsMetadata().values()].map((iconType, index) => {
const iconComponent = getMyIcon(iconType);
return <View key={index}>{iconComponent}</View>;
});
或在[...getIconsMetadata().values()].map
前加上return
const showIcons = () => {
return [...getIconsMetadata().values()].map((iconType, index) => {
const iconComponent = getMyIcon(iconType);
return <View key={index}>{iconComponent}</View>;
});
};
我正在开发react-native项目。
我有一个函数可以将图标元数据设置为 Map
:
export function getIconsMetadata() {
// a map of icons' metadata
const iconsMetadata = new Map();
...
// code to set icon metadata to the map
iconsMetadata.set("foo", "Foo");
iconsMetadata.set("bar", "Bar");
...
return iconsMetadata;
}
还有一个函数return是基于图标类型的实际图标组件(即iconsMetadata
的值保存图标类型):
export function getMyIcon(iconType) {
switch (iconType) {
case 'Foo':
return <Foo />;
case 'Bar':
return <Bar />;
...
}
在我的屏幕上,我有一个功能可以通过迭代上述图标元数据的值来显示图标组件 Map
,并尝试呈现每个图标组件:
export const MyScreen() => {
const showIcons = () => {
[...getIconsMetadata().values()].map((iconType, index) => {
const iconComponent = getMyIcon(iconType);
return <View key={index}>
{iconComponent}
</View>;
});
};
return (
<View style={styles.container}>
{/*I call the showIcons function here to render icons*/}
{showIcons()}
</View>
)
}
问题是屏幕上没有显示图标。
但是如果我直接 return 一个 图标组件在我的屏幕上:
export const MyScreen = () => {
...
const showOneIcon = () => {
return <View>
<Foo />
</View>;
});
}
return (
<View style={styles.container}>
{/*I show one icon*/}
{showOneIcon()}
</View>
)
}
<Foo />
图标组件在屏幕上渲染成功。
那么,为什么迭代地图以显示所有图标不起作用?
问题是您没有 return 从 showIcons 中获取任何内容。要么从那里删除 { }
const showIcons = () =>
[...getIconsMetadata().values()].map((iconType, index) => {
const iconComponent = getMyIcon(iconType);
return <View key={index}>{iconComponent}</View>;
});
或在[...getIconsMetadata().values()].map
const showIcons = () => {
return [...getIconsMetadata().values()].map((iconType, index) => {
const iconComponent = getMyIcon(iconType);
return <View key={index}>{iconComponent}</View>;
});
};