【发布时间】:2018-11-19 01:53:38
【问题描述】:
我现在正在开发一个带有几个嵌套对象的对象的应用程序。现在在我的学校对象中的用户对象中,我可以显示学校对象,但是当我尝试获取学校对象的名称属性时,当它有一个值时,我得到未定义的名称属性。
这是我的应用程序状态:
{
"user": {
"user": {
"name": "Test",
"email": "test@test.edu",
"avatar": "http://www.gravatar.com/avatar/xxxx=300",
"city": null,
"state": null,
"zip": null,
"address": null,
"lat": null,
"long": null,
"school": {
"id": 1,
"about": null,
"header": null,
"name": "Test",
"user_id": 1,
"created_at": "2018-06-06 19:48:16",
"updated_at": "2018-06-06 19:48:16"
},
"following": [],
"followers": [],
"social_networks": [{
"id": 4,
"user_id": 1,
"social_network_id": 1,
"network_url": "test.com/k",
"created_at": "2018-06-06 23:11:09",
"updated_at": "2018-06-06 23:15:19"
}, {
"id": 5,
"user_id": 1,
"social_network_id": 2,
"network_url": "test.com/k",
"created_at": "2018-06-06 23:15:19",
"updated_at": "2018-06-06 23:15:19"
}, {
"id": 6,
"user_id": 1,
"social_network_id": 5,
"network_url": "test.com/k",
"created_at": "2018-06-06 23:16:15",
"updated_at": "2018-06-06 23:16:15"
}]
}
},
"socialNetowrks": {
"available_networks": [{
"id": 1,
"network_name": "Facebook",
"created_at": null,
"updated_at": null
}, {
"id": 2,
"network_name": "Instagram",
"created_at": null,
"updated_at": null
}, {
"id": 5,
"network_name": "Twitter",
"created_at": null,
"updated_at": null
}]
}
}
这是我的吸气剂
const getters = {
name(state){
return state.user.school.name
}
};
const mutations = {
FETCH_USER(state,user){
state.user = user;
}
};
const actions = {
getUser: ({commit}) => {
axios.get('/user').then(response => {
commit('FETCH_USER', response.data);
});
}
}
当我返回学校对象时,我得到了对象
{
"id": 1,
"about": null,
"header": null,
"name": "Test",
"user_id": 1,
"created_at": "2018-06-06 19:48:16",
"updated_at": "2018-06-06 19:48:16"
}
但是当我返回 state.user.school.name 时,我得到了未定义。 如果你有嵌套对象,Vuex 会不会工作?
【问题讨论】:
-
我认为这可能是反应性问题。你如何设置和获取
state.user的值?请包含更多 vuex 操作、突变。 -
这只是一个错字,还是你的“用户”对象中有一个“用户”属性?如果是这样,不应该是
state.user.user.school.name吗? -
@ittus FETCH_USER(state,user){ state.user = user; },
-
@Vlad274 在 vuex 中使用模块时就是这样