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?
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.
Hilfreichster Kommentar
Wenn kein Standardwert vorhanden ist, funktioniert mein Typescript-Run-Build nicht. Gibt es eine Möglichkeit, dies optional zu machen?