Есть ли причина, по которой аргумент defaultValue
здесь не является необязательным?
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-адрес документов: https://reactjs.org/docs/context.html#reactcreatecontext
Аргумент defaultValue используется только в том случае, если компонент не имеет соответствующего Provider над ним в дереве.
У меня есть соответствующий поставщик выше в дереве, поэтому я могу создать контекст без установки значения по умолчанию, или я ошибаюсь?
Я пока закрываю этот вопрос. Если кто-то думает, что это реальная проблема, не стесняйтесь вносить свой вклад.
Отсутствие значения по умолчанию мешает моей сборке машинописного текста работать. Есть ли способ сделать это необязательным?
Если вы хотите скомпилировать свой код без значения по умолчанию, вы можете запустить его с помощью null
.
export const AuthContext = React.createContext(null)
~ Решение null
больше не работает для меня. Запишу новый выпуск ~
Изменить: нет, https://github.com/DefinitiTyped/DefinitiTyped/pull/34854 упоминает, почему. Ах хорошо.
Самый полезный комментарий
Отсутствие значения по умолчанию мешает моей сборке машинописного текста работать. Есть ли способ сделать это необязательным?