我有一个动作,通过此操作从我的后端获取一些信息:
export const getGroup = id => dispatch => {
axios
.get(`/api/group/${id}`)
.then(res => {
if (res.data === null) {
throw { error: "no group found" };
}
dispatch({
type: GET_GROUP,
payload: res.data
});
})
.catch(err =>
dispatch({
type: GET_ERRORS,
payload: err
})
);
};
我使用mapStateToProps映射数据,并使用解构将数据分配给变量 -
const { group } = this.props.group;
console.log(group)给了我这个:
{passwordenabled: true, _id: "5b04a644533447437c4bb4a7", groupname: "ddsafdsfadfas", email: "2@2.com", password: "$2a$10$qXZsWtyhySGv4hrSCIXq2.0Yl9kjK8qYLUPkNPo1LfjZujbNeED.W", …}
但是,当我尝试访问groupname属性时,它会给我这个错误:
TypeError: Cannot read property 'groupname' of undefined
console.log中的对象包含属性groupname:“ddsafdsfadfas”和typeof reveal object,但我仍然无法直接访问该属性。我不明白为什么我收到这个错误?
编辑:完整的mapStateToProps代码 -
const mapStateToProps = state => ({
group: state.group,
errors: state.errors
});
export default connect(mapStateToProps, { getGroup })(Dashboard);
答案 0 :(得分:1)
您的问题可能是异步对象。您正在尝试访问由异步操作提供的对象的值。尝试一些lil检查,看看。试试
const { group } = this.props.group;
if(group) {
console.log('The groupname is', group.groupname);
}
您的控制台是否会被执行?