I'm trying to list down sets of images. I have multiple folders in ./assets
./assets
├── 1x3
│ ├── 1.jpg
│ ├── 2.jpg
│ └── 3.jpg
└── 3x3
├── 1.jpg
├── 2.jpg
├── 3.jpg
├── 4.jpg
├── 5.jpg
├── 6.jpg
├── 7.jpg
├── 8.jpg
└── 9.jpg
I'd prefer to loop through ./assets for subfolders, and loop through each subfolder for images. I have tried looking online for solutions but they don't seem to work.
I have tried:
import React, { FC, ReactElement, useEffect, useState } from "react";
import { StyleSheet, View } from "react-native";
interface GalleryProps {
handle: string;
}
const importAll = (r) => {
return r.keys().map(r);
}
const Gallery: FC<GalleryProps> = (props: GalleryProps): ReactElement => {
const [listOfImages, setListOfImages] = useState<any>([])
useEffect(() => {
setListOfImages(importAll(require.context('../assets/1x3', false, /\.(png|jpe?g|svg)$/)));
}, [])
return (
<View style={styles.wrapper}>
<View>
{
listOfImages.map(
(image, index) => <img key={index} src={image} ></img>
)
}
</View>
</View>
);
};
const styles = StyleSheet.create({
wrapper: {
flex: 1,
backgroundColor: "lavenderblush",
alignItems: "center",
justifyContent: "center",
},
});
export default Gallery;
But I get this error: _$$_REQUIRE.context is not a function. (In '_$$_REQUIRE.context('../assets/1x3', false, /\.(png|jpe?g|svg)$/','_$$_REQUIRE.context' is undefined
Ideally, I hope to achieve something like (pseudocode):
const Parent() {
return (
for (subfolders in folder) { // or folders.map(subfolder => ...)
return <Child props={subfolder}>
}
)
}
and
const Child(props) {
return (
for (images in props.subfolder) { // or props.subfolder.map(image => ...)
return <img src="image" />
)
)
}
I have also tried react-native-fs (but apparently this is for the device's folder). Any help is appreciated.