使用 null 作为初始值时,`React.createContext(null)` 的打字稿类型
Posted
技术标签:
【中文标题】使用 null 作为初始值时,`React.createContext(null)` 的打字稿类型【英文标题】:Typescript type for `React.createContext(null)` when using null for initial value 【发布时间】:2020-12-04 09:54:10 【问题描述】:我有一个用来从useContext
获取值的钩子
使用Firebase.js
import React, useContext from 'react';
export const FirebaseContext = React.createContext(null);
function useFirebase(): firebase.app.App
const firebase = useContext(FirebaseContext);
return firebase;
export default useFirebase;
这是上下文提供者:
App.js
import FirebaseContext from '@hooks/useFirebase';
function App()
return(
<FirebaseContext.Provider value=props.firebase>
// The app
</FirebaseContext.Provider>
);
然后我通过以下方式访问整个应用程序:
SomeComponent.ts
const firebase = useFirebase();
问题
在useFirebase.ts
文件中,我在null
之间遇到了问题,它在React.createContext(null)
中初始化
我怎样才能摆脱这种冲突?
注意: props.firebase
类型为 firebase.app.App
我通常用null
打电话给createContext
,这就是Typescript 抱怨的原因。
以下代码似乎可以解决问题,但我不想使用 代替 null。
export const FirebaseContext = React.createContext( as firebase.app.App);
【问题讨论】:
你试过createContext<App | null>(null)
吗?
【参考方案1】:
尝试输入createContext
:
const FirebaseContext = React.createContext<firebase.app.App | null>(null);
有关更多有用信息,请参阅React TS Cheatsheet。
【讨论】:
以上是关于使用 null 作为初始值时,`React.createContext(null)` 的打字稿类型的主要内容,如果未能解决你的问题,请参考以下文章
使用初始化列表作为值时插入 std::list<std::vector<int>> 失败?
ReactFire - 将 Firebase 绑定到 React 状态时,获取“对象作为 React 子项无效”