Definitelytyped: [@types/react] createContext – Ein Argument für 'defaultValue' wurde nicht bereitgestellt.

Erstellt am 20. Juli 2019  ·  4Kommentare  ·  Quelle: DefinitelyTyped/DefinitelyTyped

Gibt es einen Grund, warum das Argument defaultValue hier nicht optional ist?

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>
  );
};

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

Das Argument defaultValue wird nur verwendet, wenn über einer Komponente kein übereinstimmender Provider im Baum vorhanden ist.

Ich habe oben im Baum einen passenden Provider, also sollte ich in der Lage sein, einen Kontext zu erstellen, ohne einen Standardwert festzulegen, oder liege ich falsch?

Hilfreichster Kommentar

Wenn kein Standardwert vorhanden ist, funktioniert mein Typescript-Run-Build nicht. Gibt es eine Möglichkeit, dies optional zu machen?

Alle 4 Kommentare

Ich schließe dieses Thema vorerst. Wenn jemand der Meinung ist, dass dies ein echtes Problem ist, können Sie gerne dazu beitragen.

Wenn kein Standardwert vorhanden ist, funktioniert mein Typescript-Run-Build nicht. Gibt es eine Möglichkeit, dies optional zu machen?

Wenn Sie Ihren Code ohne einen Standardwert kompilieren möchten, können Sie ihn mit null .

export const AuthContext = React.createContext(null)

~Die null Lösung funktioniert bei mir nicht mehr. Ich werde eine neue Ausgabe einreichen.~

Bearbeiten: nein, https://github.com/DefinitelyTyped/DefinitelyTyped/pull/34854 erwähnt warum. Ah, gut.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

Zzzen picture Zzzen  ·  3Kommentare

Loghorn picture Loghorn  ·  3Kommentare

JWT
svipas picture svipas  ·  3Kommentare

variousauthors picture variousauthors  ·  3Kommentare

ArtemZag picture ArtemZag  ·  3Kommentare