从react redux

时间:2018-05-23 02:32:01

标签: reactjs redux

我有一个动作,通过此操作从我的后端获取一些信息:

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);

1 个答案:

答案 0 :(得分:1)

您的问题可能是异步对象。您正在尝试访问由异步操作提供的对象的值。尝试一些lil检查,看看。试试

const { group } = this.props.group;
if(group) {
  console.log('The groupname is', group.groupname);
}

您的控制台是否会被执行?