node.js - react native require() 中的动态文件名
问题描述
我们正在开发一个应用程序,该应用程序允许用户存储带有图像的模板,并在以后提取这些模板。这是针对在 React Native 上使用 Viro 的 AR 环境。
我们正在尝试将图像动态加载到组件中,并在我们需要已设置为变量的文件路径时收到错误:
const exampleUri = '/some/uri'
render() {
return(
<Viro3DObject
source={require(exampleUri)}
/>)
}
源道具的 URI 必须是动态的,因为 URI 是从数据库中提取的。我们尝试将整个请求存储在数据库中(在 models/element.js 中):
const Sequelize = require('sequelize');
const db = require('../db');
const Element = db.define('element', {
sourceViro3DObject: {
type: Sequelize.STRING
}
});
sourceViro3DObject: `require('../../assets/emoji_heart/emoji_heart.vrx')`
当我们在 React Native 类组件中调用它时:
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_heart/emoji_heart.vrx'
然后调用它:
require(this.state.sourceViro3DObject)
并收到以下错误:
Invalid prop `source` supplied to `Viro3DObject`
我们已经看到了将 URI 存储在对象中的建议,但这对我们不起作用,因为在从数据库中提取图像之前,我们不知道要使用什么图像。我们不能在任何地方对它们进行硬编码。
我们将不胜感激任何帮助!
解决方案
推荐阅读
- html - 如何在一组嵌套 div 中的任意位置查找具有 XPath 的元素
- c++ - 为什么在某些情况下我可以调用没有对象的成员函数?
- sql - 对多个表的层次结构/递归查询
- tensorflow - tensorflow2.0 lstm ,当一个时间序列用于恢复另一个时,现在验证数据集的损失不能减少
- firebase - Firestore 安全规则允许在开始和结束日期之间的最大间隔 31 天内查询文档
- python - 如何指定打印螺旋的确切尺寸
- pygame - ModuleNotFoundError:没有名为“pygame”的模块,但终端说我安装了 pygame
- reactjs - 无法在没有“解析错误”错误的情况下编译 ReactJS 代码
- sql - Hive 中的条件基于两个表
- ionic-framework - 将 ionic 1 代码迁移到 ionic 4/5 的问题