Node.js react native require()中的动态文件名
我们正在开发一个应用程序,允许用户存储带有图像的模板,并在以后将这些模板拉上来。这适用于在React Native上使用Viro的AR环境 我们正在尝试将图像动态加载到组件中,并在需要文件路径时收到错误,该文件路径已设置为变量:Node.js react native require()中的动态文件名,node.js,reactjs,database,react-native,augmented-reality,Node.js,Reactjs,Database,React Native,Augmented Reality,我们正在开发一个应用程序,允许用户存储带有图像的模板,并在以后将这些模板拉上来。这适用于在React Native上使用Viro的AR环境 我们正在尝试将图像动态加载到组件中,并在需要文件路径时收到错误,该文件路径已设置为变量: const exampleUri = '/some/uri' render() { return( <Viro3DObject source={require(exampleUri)} />) } 当我们在Reac
const exampleUri = '/some/uri'
render() {
return(
<Viro3DObject
source={require(exampleUri)}
/>)
}
当我们在React本机类组件中调用它时:
getObjectData = async () => {
try {
const {data} = await axios.get(`/api/elements/${this.props.elementId}`)
this.setState({sourceViro3DObject: data.sourceViro3DObject})
} catch (err) {
console.log(err)
}
}
async componentDidMount() {
await this.getObjectData()
}
但这只是将state.sourceViro3DObject设置为字符串:
'require('../../assets/emoji_heart/emoji_heart.vrx')'
我们已尝试将文件路径直接设置为字符串状态:
state.sourceViro3DObject='../assets/emoji\u heart/emoji\u heart.vrx'
然后调用它:
require(this.state.sourceViro3DObject)
并收到以下错误:
Invalid prop `source` supplied to `Viro3DObject`
我们已经看到了将URI存储在对象中的建议,但这对我们不起作用,因为我们不知道要使用什么图像,直到它从数据库中取出。我们不能在任何地方硬编码它们
我们非常感谢您的帮助 只是好奇,你有没有试着在浏览器中点击backend/db来查看你得到了什么?如果您记录
const{data}=wait axios.get(`/api/elements/${this.props.elementId}')
,您会得到什么?另外,如果您已经确认您从api/db获得了预期的结果,请查看这是否有帮助:嘿@HolyMoly!我们做了控制台记录。它返回为字符串'require(/whatever/uri)'(当我们将其与require调用一起存储时)。这只是一个字符串,所以“require”实际上不会被调用。抱歉,发布得太早了!我们确实看到了您链接到的另一个解决方案,但它也有一个硬编码方面://GOOD var icon=this.props.active?require('./myicon-active.png'):require('./myicon-inactive.png');因此,您必须知道可能的URI是什么,而我们正试图考虑您不知道URI的情况。因此,对于指定的URI来说,这是一个很好的解决方法,但它并没有完全达到我们的目标。
Invalid prop `source` supplied to `Viro3DObject`