打字稿-如何打字片段或反应懒惰道具?

时间:2020-10-22 06:54:10

标签: javascript reactjs typescript styled-components react-lazy-load

我正在使用react-lazyLoad,并且传递了一些道具,如下所示。该库已经导出了道具类型 LazyLoadProps 。通过时不起作用。

我还添加了手动类型(testProps),它没有用。

import React from 'react';

import LazyLoad, { LazyLoadProps } from 'react-lazyload';
import { isUserAgentMobile } from '@lib/helpers';    
import { Props } from './types';

// type testProps = {
//   height?: number;
//   offset?: number;
//   once?: boolean;
// };

const Me = (props: Props): JSX.Element => {
  const LazyLoadOnMobile = props.isMobile ? LazyLoad : React.Fragment;
  const lazyLoadProps: LazyLoadProps = props.isMobile ? { height: 0, offset: 5000, once: true } : {};

  return (
      <LazyLoadOnMobile {...lazyLoadProps}> //error happens here!
        hi
      </LazyLoadOnMobile>
  );
};

这是错误消息:

TS2740:键入'{children:Element [];一次?:布尔|未定义高度?编号|未定义偏移量::数字|数字[] |未定义溢出?:布尔值|未定义调整大小?未定义...还有7个...; classNamePrefix ?:字符串|未定义}”缺少类型“ LazyLoad”中的以下属性:context,setState,forceUpdate,render和另外3个。

我的问题是:

  1. 我要传递的类型有什么问题?
  2. 我是否需要向 LazyLoadOnMobile 添加某种类型(类似const LazyLoadOnMobile: typeof LazyLoad | React.ExoticComponent<{children?: React.ReactNode}>)?

0 个答案:

没有答案