类型错误:无法读取未定义的属性“组”

时间:2021-07-19 04:51:16

标签: reactjs redux

我正在尝试从 redux 商店映射状态,但出现错误 类型错误:无法读取未定义的属性“组”

我确定数据输入正确,但我不确定我是否以错误的方式映射了这个来呈现 contactDetails?.contact?.data?.group?.title 有没有办法从群详情?我对 redux 有点陌生,需要一些帮助。

我还需要在这里输入更多内容,让我猜猜有人偷了你的糖果?

下面是我的组件。

import React, { useEffect, Fragment, useState } from 'react';
import {
  Button,
  ButtonGroup,
  Card,
  CardBody,
  Col,
  Row
} from 'reactstrap';
import ButtonIcon from '../common/ButtonIcon';
import { useSelector, useDispatch } from 'react-redux';
import { contactById, deleteContact } from '../../actions/index';


const ContactEdit = ({match}) => {

  const ContactId = match.params.id

  const dispatch = useDispatch();


  const contactDetails = useSelector((state) => state.contactDetails)
  const { success: successGet } = contactDetails

  useEffect(() => {
    dispatch(contactById(ContactId))
  }, [successGet])

  const CustomerDetailRow = ({ title, isLastItem, children }) => (
    <Row>
      <Col xs={5} sm={4}>
        <p
          className={classNames('font-weight-semi-bold', {
            'mb-0': isLastItem,
            'mb-1': !isLastItem
          })}
        >
          {title}
        </p>
      </Col>
      <Col>{children}</Col>
    </Row>
  );
  
  CustomerDetailRow.propTypes = {
    title: PropTypes.string.isRequired,
    children: PropTypes.node.isRequired,
    isLastItem: PropTypes.bool
  };
  
  CustomerDetailRow.defaultProps = { last: false };

  return (
    <Card className="mb-3">
      <CardBody className="bg-light border-top">     
          <Row>
            <Col lg className="col-xxl-5">
              <h6 className="font-weight-semi-bold ls mb-3 text-uppercase">Contact 
                Details</h6>
              
              <CustomerDetailRow title="Groups" isLastItem>     <----- here is my issue
                {contactDetails.contact.data.group.map( groups => <p className="font-italic text-400 mb-0">{contactDetails?.contact?.data?.group?.title}</p>)}
              </CustomerDetailRow>


            </Col>
          </Row>
        
      </CardBody>
     
    </Card>
    </Card>

  );
};

export default ContactEdit;

1 个答案:

答案 0 :(得分:0)

正如德鲁在评论中所说的,我在地图回调中错误地引用了组,这是下面的解决方案,我还添加了?给时间加载结果

<CustomerDetailRow title="Groups" isLastItem>
                {contactDetails?.contact?.data?.group.map(groups => <p className="font-italic text-400 mb-0">{groups.title}</p>)}
              </CustomerDetailRow>```