Definitelytyped: [@ types / react] createContext - Um argumento para 'defaultValue' não foi fornecido.

Criado em 20 jul. 2019  ·  4Comentários  ·  Fonte: DefinitelyTyped/DefinitelyTyped

Existe alguma razão para que o argumento defaultValue não seja opcional aqui?

import * as React from 'react';
import * as firebase from 'firebase/app';

interface AuthProps {
  children: any;
}
interface AuthState {
  user: firebase.User | null;
}
interface AuthContextProps extends AuthState {
  updateUser(user: firebase.User | null): void;
}

export const AuthContext = React.createContext<AuthContextProps>(); // <-- ERROR HERE!

// export const AuthConsumer = AuthContext.Consumer;
export const AuthProvider = (props: AuthProps) => {
  const [state, setState] = React.useState<AuthState>({
    user: null,
  });

  const updateUser = (user: firebase.User | null) => setState({ user });

  return (
    <AuthContext.Provider
      value={{
        updateUser,
        user: state.user,
      }}
    >
      {props.children}
    </AuthContext.Provider>
  );
};

URL do Docs: https://reactjs.org/docs/context.html#reactcreatecontext

O argumento defaultValue é usado apenas quando um componente não tem um Provedor correspondente acima dele na árvore.

Eu tenho um Provedor correspondente acima na árvore, então devo ser capaz de criar um contexto sem definir um valor padrão ou estou errado?

Comentários muito úteis

Não ter um valor padrão está impedindo meu build de execução de typescript de funcionar. Existe alguma maneira de tornar isso opcional?

Todos 4 comentários

Estou encerrando esse problema por enquanto. Se alguém pensa que este é um problema real, fique à vontade para contribuir.

Não ter um valor padrão está impedindo meu build de execução de typescript de funcionar. Existe alguma maneira de tornar isso opcional?

Se você deseja compilar seu código sem um valor padrão, você pode iniciá-lo com null .

export const AuthContext = React.createContext(null)

~ A solução null não funciona mais para mim. Vou registrar um novo problema. ~

Editar: não, https://github.com/DefinitelyTyped/DefinitelyTyped/pull/34854 menciona o porquê. Ah bem.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Loghorn picture Loghorn  ·  3Comentários

alisabzevari picture alisabzevari  ·  3Comentários

variousauthors picture variousauthors  ·  3Comentários

JudeAlquiza picture JudeAlquiza  ·  3Comentários

JWT
svipas picture svipas  ·  3Comentários