Y a-t-il une raison pour laquelle l'argument defaultValue
n'est pas facultatif ici ?
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 des documents : https://reactjs.org/docs/context.html#reactcreatecontext
L'argument defaultValue n'est utilisé que lorsqu'un composant n'a pas de fournisseur correspondant au-dessus de lui dans l'arborescence.
J'ai un fournisseur correspondant ci-dessus dans l'arborescence, je devrais donc pouvoir créer un contexte sans définir de valeur par défaut ou je me trompe ?
Je clos ce sujet pour l'instant. Si quelqu'un pense que c'est un vrai problème, alors soyez libre de contribuer.
Ne pas avoir de valeur par défaut empêche ma construction d'exécution de script de fonctionner. Y a-t-il un moyen de rendre cela facultatif?
Si vous souhaitez compiler votre code sans valeur par défaut, vous pouvez l'initialiser avec null
.
export const AuthContext = React.createContext(null)
~La solution null
ne fonctionne plus pour moi. Je vais déposer un nouveau problème.~
Edit: non, https://github.com/DefinitelyTyped/DefinitelyTyped/pull/34854 mentionne pourquoi. Et bien.
Commentaire le plus utile
Ne pas avoir de valeur par défaut empêche ma construction d'exécution de script de fonctionner. Y a-t-il un moyen de rendre cela facultatif?