在 vue 组件中使用存储在 vuex 中的上传照片时出现问题
Trouble using uploaded photo stored in vuex in vue component
我可以上传照片用作头像,但只能显示我的默认照片。当我尝试访问新上传的文件时,组件显示 $store.state.photo。我相信我可能需要照片,因为与 webpack 有关,但我不知道我应该在哪里做。我可以在我的 vuex 商店中做到这一点,但不能在组件中做到这一点。
查看vue开发工具时,刚上传的照片确实显示为state.photo的新值,只是不显示。
Vue 组件
<v-avatar size="70" class="mb-2">
<img :src="$store.state.photo" alt="$store.state.name" />
</v-avatar>
Vuex 商店
state: {
photo: require('../../backend/public/users/default.jpg')
},
我在组件的数据中尝试了以下但它不起作用。我错过了什么?
data() {
return {
photo: require(`../backend/public/users/${this.$store.state.photo}`)
};
},
当用户没有上传他们的图片时显示默认图片是一个表现问题,而不是一个逻辑状态问题;你不应该为此使用 Vuex。您可以使用 photo: null
来初始化 state/data,这样可以更好地模拟当前不存在的照片。
此外,对于这种静态资产,使用相对路径不是一个好主意,如果您将组件移动到另一个文件夹,这将会中断。相对较新的 vue-cli 项目配置为使用 @
作为 src
文件夹。
所以你的组件看起来像
<v-avatar size="70" class="mb-2">
<img :src="$store.state.photo || '@/backend/public/users/default.jpg'" alt="$store.state.name" />
</v-avatar>
而且只要您实际将空值初始化为 null
而不是 ''
之类的东西,它就应该如您所愿
我可以上传照片用作头像,但只能显示我的默认照片。当我尝试访问新上传的文件时,组件显示 $store.state.photo。我相信我可能需要照片,因为与 webpack 有关,但我不知道我应该在哪里做。我可以在我的 vuex 商店中做到这一点,但不能在组件中做到这一点。
查看vue开发工具时,刚上传的照片确实显示为state.photo的新值,只是不显示。
Vue 组件
<v-avatar size="70" class="mb-2">
<img :src="$store.state.photo" alt="$store.state.name" />
</v-avatar>
Vuex 商店
state: {
photo: require('../../backend/public/users/default.jpg')
},
我在组件的数据中尝试了以下但它不起作用。我错过了什么?
data() {
return {
photo: require(`../backend/public/users/${this.$store.state.photo}`)
};
},
当用户没有上传他们的图片时显示默认图片是一个表现问题,而不是一个逻辑状态问题;你不应该为此使用 Vuex。您可以使用 photo: null
来初始化 state/data,这样可以更好地模拟当前不存在的照片。
此外,对于这种静态资产,使用相对路径不是一个好主意,如果您将组件移动到另一个文件夹,这将会中断。相对较新的 vue-cli 项目配置为使用 @
作为 src
文件夹。
所以你的组件看起来像
<v-avatar size="70" class="mb-2">
<img :src="$store.state.photo || '@/backend/public/users/default.jpg'" alt="$store.state.name" />
</v-avatar>
而且只要您实际将空值初始化为 null
而不是 ''
之类的东西,它就应该如您所愿