Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js react native require()中的动态文件名_Node.js_Reactjs_Database_React Native_Augmented Reality - Fatal编程技术网

Node.js react native require()中的动态文件名

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

我们正在开发一个应用程序,允许用户存储带有图像的模板,并在以后将这些模板拉上来。这适用于在React Native上使用Viro的AR环境

我们正在尝试将图像动态加载到组件中,并在需要文件路径时收到错误,该文件路径已设置为变量:

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`