FlatList 使用 numColumns 显示元素类型无效
FlatList use numColumns shows Elements type is invalid
我使用 FlatList 来显示这样的图像:
但是当我在 FlatList
中添加 numColumns={2}
时,它会显示错误:
Element type is invalid
奇怪的是我用numColumns={1}
没有报错
我想不通。任何人都可以给我一些建议吗?提前致谢。
这是我使用的 FlatList 代码
import {
View,
Text,
StatusBar,
FlatList,
Image,
Dimensions
} from "react-native";
const { width, height } = Dimensions.get("window");
const equalWidth = width / 2;
class MainActivity extends Component {
renderItem = ({ item }) => {
return item.map(value => {
return (
<View>
<Image
style={{ height: 150, width: equalWidth }}
source={{ uri: value.photoHref }}
resizeMode="cover"
/>
</View>
);
});
};
render() {
return (
<FlatList
data={movieData}
renderItem={this.renderItem}
horizontal={false}
keyExtractor={(item, index) => index}
numColumns={2}
/>
);
}
}
尝试用 View
包装您的组件数组:
renderItem = ({ item }) => (
<View>
{item.map((value) => (
<View>
<Image
style={{ height: 150, width: equalWidth }}
source={{ uri: value.photoHref }}
resizeMode="cover"
/>
</View>
))}
</View>
);
添加到@riwu 答案,请将属性 columnWrapperStyle={{width:"50%}}
添加到 FlatList。也就是说,你给了多少列,将相应的宽度添加到道具中。
您不需要向 Flatlist
图像添加显式 width
,只需向父包装器提供 flex 即可。
因为 renderItem 需要 return 中的 React.Element
,所以你可以做
renderItem = ({item}) => (
<View style={{flex: 1, height: 150, margin: 5}}> <== Adding margin(Optional), width will be automatically scaled
item.map(value => (
<Image
style={{flex: 1}}
source={{ uri: value.photoHref }}
resizeMode="cover"
/>
))
</View>
)
Here's 根据您的代码提供的示例零食
我使用 FlatList 来显示这样的图像:
但是当我在 FlatList
中添加 numColumns={2}
时,它会显示错误:
Element type is invalid
奇怪的是我用numColumns={1}
我想不通。任何人都可以给我一些建议吗?提前致谢。
这是我使用的 FlatList 代码
import {
View,
Text,
StatusBar,
FlatList,
Image,
Dimensions
} from "react-native";
const { width, height } = Dimensions.get("window");
const equalWidth = width / 2;
class MainActivity extends Component {
renderItem = ({ item }) => {
return item.map(value => {
return (
<View>
<Image
style={{ height: 150, width: equalWidth }}
source={{ uri: value.photoHref }}
resizeMode="cover"
/>
</View>
);
});
};
render() {
return (
<FlatList
data={movieData}
renderItem={this.renderItem}
horizontal={false}
keyExtractor={(item, index) => index}
numColumns={2}
/>
);
}
}
尝试用 View
包装您的组件数组:
renderItem = ({ item }) => (
<View>
{item.map((value) => (
<View>
<Image
style={{ height: 150, width: equalWidth }}
source={{ uri: value.photoHref }}
resizeMode="cover"
/>
</View>
))}
</View>
);
添加到@riwu 答案,请将属性 columnWrapperStyle={{width:"50%}}
添加到 FlatList。也就是说,你给了多少列,将相应的宽度添加到道具中。
您不需要向 Flatlist
图像添加显式 width
,只需向父包装器提供 flex 即可。
因为 renderItem 需要 return 中的 React.Element
,所以你可以做
renderItem = ({item}) => (
<View style={{flex: 1, height: 150, margin: 5}}> <== Adding margin(Optional), width will be automatically scaled
item.map(value => (
<Image
style={{flex: 1}}
source={{ uri: value.photoHref }}
resizeMode="cover"
/>
))
</View>
)
Here's 根据您的代码提供的示例零食