I have this array of images in my project.
this.state.destinations = [{
"destinationId": "001",
"img": "../../assets/img/destinations/001.png"
},
{
"destinationId": "002",
"img": "../../assets/img/destinations/002.png"
},
{
"destinationId": "003",
"img": "../../assets/img/destinations/003.png"
}]
}
I am trying to repeat each of them inside a View in a Image component like this:
render() {
var {navigate} = this.props.navigation;
return (
<LinearGradient
colors={['#514A9D', '#24C6DC']} start={[0.0, 0.5]} end={[1.0, 0.5]} locations={[0.0, 1.0]} style={{flex:1}}>
<ScrollView>
{
<View style={{paddingTop: 24}}>
{
this.state.destinations.map(dest => {
return <Image style={{height: 200, width: 600}} key={dest.destinationId} source={require(dest.img)} resizeMode="contain" />
})
}
</View>
}
</ScrollView>
</LinearGradient>
);
}
But I getting some crazy error in my phone when trying to run:
I trying to run the app in expo and I am just developing it in react-native mode, not react-native-init mode.
Try refactoring your code in the following way, moving your use of require directly to where your data is defined so that the static resource path is evaluated correctly:
this.state.destinations = [{
"destinationId": "001",
"img": require("../../assets/img/destinations/001.png")
},
{
"destinationId": "002",
"img": require("../../assets/img/destinations/002.png")
},
{
"destinationId": "003",
"img": require("../../assets/img/destinations/003.png")
}]
}
And then update the way you render <Image />
like so, removing the call to require()
and referencing dest.img
directly:
this.state.destinations.map(dest => {
return <Image source={dest.img}
key={dest.destinationId}
style={{height: 200, width: 600}}
resizeMode='contain' />
})
Hope this helps!
Dynamic image import:
"img": require("../../assets/img/destinations/001.png")
<Image source={dest.img} />
Expo link: code
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With