Definitelytyped: [@types/react] createContext – 未提供“defaultValue”的参数。

创建于 2019-07-20  ·  4评论  ·  资料来源: DefinitelyTyped/DefinitelyTyped

有什么理由说明为什么这里的参数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>
  );
};

文档网址: https :

仅当组件在树中没有匹配的 Provider 时才使用 defaultValue 参数。

我在树上有一个匹配的 Provider,所以我应该能够在不设置默认值的情况下创建上下文,或者我错了?

最有用的评论

没有默认值会使我的打字稿运行构建无法正常工作。 有没有办法让这个可选?

所有4条评论

我现在关闭这个问题。 如果有人认为这是一个真正的问题,那么请自由贡献。

没有默认值会使我的打字稿运行构建无法正常工作。 有没有办法让这个可选?

如果你想在没有默认值的情况下编译你的代码,你可以用null初始化它。

export const AuthContext = React.createContext(null)

~ null解决方案不再适用于我。 我会提交一个新的问题。~

编辑:不, https :

此页面是否有帮助?
0 / 5 - 0 等级