Apakah ada alasan mengapa argumen defaultValue
tidak opsional di sini?
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 dokumen: https://reactjs.org/docs/context.html#reactcreatecontext
Argumen defaultValue hanya digunakan ketika komponen tidak memiliki Penyedia yang cocok di atasnya di pohon.
Saya memiliki Penyedia yang cocok di atas di pohon, jadi saya harus dapat membuat konteks tanpa menetapkan nilai default atau saya salah?
Saya menutup masalah ini untuk saat ini. Jika seseorang berpikir ini adalah masalah nyata, maka bebaslah untuk berkontribusi.
Tidak memiliki nilai default membuat skrip run build saya tidak berfungsi. Apakah ada cara untuk membuat ini opsional?
Jika Anda ingin mengkompilasi kode Anda tanpa nilai default, Anda dapat memulainya dengan null
.
export const AuthContext = React.createContext(null)
~Solusi null
tidak lagi berfungsi untuk saya. Saya akan mengajukan masalah baru.~
Sunting: tidak, https://github.com/DefinitelyTyped/DefinitelyTyped/pull/34854 menyebutkan alasannya. baiklah.
Komentar yang paling membantu
Tidak memiliki nilai default membuat skrip run build saya tidak berfungsi. Apakah ada cara untuk membuat ini opsional?