Definitelytyped: [@ types / react] createContext: no se proporcionó un argumento para 'defaultValue'.

Creado en 20 jul. 2019  ·  4Comentarios  ·  Fuente: DefinitelyTyped/DefinitelyTyped

¿Hay alguna razón por la que el argumento defaultValue no sea opcional aquí?

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 de documentos: https://reactjs.org/docs/context.html#reactcreatecontext

El argumento defaultValue solo se usa cuando un componente no tiene un Proveedor coincidente encima en el árbol.

Tengo un Proveedor coincidente arriba en el árbol, por lo que debería poder crear un contexto sin establecer un valor predeterminado o me equivoco.

Comentario más útil

No tener un valor predeterminado impide que funcione la compilación de ejecución de mecanografiado. ¿Hay alguna forma de hacer esto opcional?

Todos 4 comentarios

Estoy cerrando este problema por ahora. Si alguien piensa que esto es un problema real, entonces sea libre de contribuir.

No tener un valor predeterminado impide que funcione la compilación de ejecución de mecanografiado. ¿Hay alguna forma de hacer esto opcional?

Si desea compilar su código sin un valor predeterminado, puede iniciarlo con null .

export const AuthContext = React.createContext(null)

~ La solución null ya no me funciona. Presentaré un nuevo problema. ~

Editar: no, https://github.com/DefinitelyTyped/DefinitelyTyped/pull/34854 menciona por qué. Ah bueno.

¿Fue útil esta página
0 / 5 - 0 calificaciones