Pesquisa de site

reactjs - React.memo não está disponível ao trabalhar com Typescript?


Estou tentando usar o React.memo assim:

const Node: React.memo<Props> = props => {

Mas estou recebendo um erro dizendo:

Namespace '../ui/node_modules/@types/react/index.d.ts"' has no exported member 'memo'.

Mas eu posso ver a função Memo dentro de index.d.ts:

function memo<P extends object>(
    Component: SFC<P>,
    propsAreEqual?: (prevProps: Readonly<PropsWithChildren<P>>, nextProps: Readonly<PropsWithChildren<P>>) => boolean
): NamedExoticComponent<P>;

function memo<T extends ComponentType<any>>(
    Component: T,
    propsAreEqual?: (prevProps: Readonly<ComponentProps<T>>, nextProps: Readonly<ComponentProps<T>>) => boolean
): MemoExoticComponent<T>;

O que estou perdendo aqui?

Resposta #1

Como mencionado nos comentários, memo não é uma declaração de tipo. Você bagunçou um pouco a sua sintaxe

const Node: React.FC<Props> = React.memo(props => {
  return(
      <div>
        memoized
      </div>
  )
})

Observe que React.FC é uma declaração de um componente funcional. Como você está envolvendo-o em um memo, você pode precisar alterar o tipo. Mas, pessoalmente, eu não precisei.

Artigos relacionados