vuejs2 - Vuex:硬刷新期间数据有时会“未定义”
问题描述
我是第一次使用 Vuex,在控制台中偶尔会遇到这个问题:
Error: TypeError: Cannot read property 'name' of undefined
Info: render
关于如何解决这个问题的任何想法?
这是我的设置:
在 Vuex (store.js) 我有一个像这样的吸气剂:
state: {
statuses: []
},
actions: {
async fetchStatuses({ commit }) {
try {
const response = await ApiService.getStatusFlags()
commit('SET_STATUSES', response.data)
} catch (err) {
console.error(err)
}
}
},
getters: {
getStatusById: state => id => {
return state.statuses.find(status => status.id === id)
},
...snip...
在我调用这个 getter 的页面上是这样的:
IssueDetail.vue 模板:
<span class="badge badge-success">{{ getStatusById(issue.status).name }}</span>
IssueDetail.vue 脚本部分:
import { mapGetters } from 'vuex'
export default {
name: 'IssueDetail',
data() {
return {
isBusy: true,
issue_id: this.$route.params.id,
issue: ''
}
},
async created() {
await this.getIssue()
this.isBusy = false
},
methods: {
async getIssue() {
try {
this.issue = (await ApiService.getIssue(this.$route.params.id)).data[0]
} catch (error) {
console.error(error)
}
}
},
computed: {
...mapGetters(['getStatusById'])
}
解决方案
这个
getStatusById(issue.status).name
无法使用问题道具的默认值。更改您的默认值或更改 getStatusById 以便它可以接受 null 或 undefined 作为输入参数,或者将模板中的表达式更改为:
issue.status? getStatusById(issue.status).name : ''
推荐阅读
- reactjs - 标签未加载 CodeSandbox.io
- php - 获取关联数组的值 [PHP]
- python - 如何在没有while循环的情况下重复输入?
- notepad++ - 如何在 Notepad++ 或 Sublime Text 中以特定颜色设置特定语言
- html - 模态在 HTML 上显示为灰色
- javascript - 如何使用 JSON.parse() 将数据提取到部件中
- python-3.x - 使用纸浆python进行优化
- swift - 无法在 Swift 中将 TimeInterval 1589485565000 转换为日期
- javascript - 如何从数组上的 forEach 方法获取结果?
- azure-sql-database - 什么可能导致我的 SQL Azure 数据库出现间歇性 LOG IO 峰值?