将数组值与样式组件一起使用时,对象可能是 'undefined'

Object is possibly 'undefined' when using array values with styled-components

我正在构建一个骨架组件,它接受一个名为 circleSizes 的道具,它是一个数字数组,用于设置骨架的宽度和高度。

这是组件:

export const SkeletonHandler: React.FC<SkeletonHandlerProps> = ({
  count = 1,
  circle = false,
  circleSizes = [50, 50],
}) => {
  return (
    <SkeletonWrapper count={count} circleSizes={circleSizes}>
      <Skeleton count={count} circle={circle} />
    </SkeletonWrapper>
  );
};

我的types.ts:

export type SkeletonHandlerProps = {
  count?: number;
  circle?: boolean;
  circleSizes?: Array<number>;
};

我知道如果删除 ?,错误就会消失,但我不希望这个 属性 成为必需项。

还有我的样式组件文件:

export const SkeletonWrapper = styled.div<SkeletonHandlerProps>`
  width: ${(circle) => (circle ? 'fit-content' : '100%')};
  ${({ circle, circleSizes }) =>
    circle &&
    css`
      .react-loading-skeleton {
        width: ${circleSizes[0]};
        height: ${circleSizes[1]};
      }
    `}
`

图片错误:

我尝试过的:

  1. 将 circleSizes 数组的默认值放在 props 中,例如:circleSizes = [50, 50]
  2. 为 types.ts 设置默认值,例如:circleSizes?: Array<number> | [50, 50];
  3. 将 circleSizes 转换为样式组件文件中的数字,例如:width: ${Number(circleSizes[0])};

我做错了什么?

它抱怨是因为您在可能是 undefined 的变量上使用括号操作数,因此请尝试在 circleSizes && circleSized[1]

之前添加有效性检查