javascript - 无法从 VueJS 中的 props 中 require() 变量路径
问题描述
我正在发送数据 - 从父到子的本地图像文件的 URL,当我在子组件中加载它时显示错误,但如果我直接加载它,它可以工作。
代码:
在 parent.vue 组件的数据中:
data(){return{items:[
{id:1, src:"../../../assets/img.png" }
在 child.vue 组件的 mount()
img.src = require(this.item.src); // This does not work
img.src = require("../../../assets/img.png") // This works
并且 console.log(this.item.src) 给出完全相同的字符串,所以孩子实际上是正确地获取数据
如您所见,这两个示例都具有相同的 URL 字符串,但一个有效,一个无效。我已经尝试了所有组合或相对 URL,但一切都失败了。
这是怎么回事?
注意:我正在通过以下方式提供开发版本webpack-dev-server
解决方案
问题应该是require
在编译时由 webpack 静态处理,而 prop 中的值在运行时解析
img.src = require(this.item.src); // This does not work since during webpack build the path is not resolved
img.src = require("../../../assets/img.png") // This works since the image is loaded and added statically
请参阅此答案以获得更清晰的webpack 动态模块加载器
您可以尝试使用动态导入语法来加载带有变量的图像,但如果您不使用 vue cli,则必须修改 webpack 配置 [可能]
它会是这样的import(this.item.src).then(src => img.src=src)
;但应该在mounted()
函数中调用,也许
推荐阅读
- javascript - Dom HTML 两次返回元素
- node.js - 如何仅在将两个图像都保存到存储后才将图像链接上传到数据库
- apache - 使用 Apache 在 8980 端口上运行 SSL
- c# - 如何从发布管道电源 shell 脚本任务中的锁定变量中获取值
- vertica - VERTICA:哪个系统参数控制容器的压缩频率?
- javascript - 使用带有 max 属性的滚动时,标签单击事件在高图条形图中不起作用
- css - 媒体查询最大宽度值不会以要求的屏幕尺寸加载
- ansible - 在 vSphere with Ansible Playbook 中启用 vMotion
- python - 将每月数据转换为每日数据以解决回归问题
- python - 在model.fit的前向计算过程中需要传递numpy数组来运行,但是tf.Tensor没有`.numpy()`属性