0

我有这个钩子,用来从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;

这是上下文提供者:

应用程序.js

import { FirebaseContext } from '@hooks/useFirebase';

function App() {
  return(
    <FirebaseContext.Provider value={props.firebase}>
      // The app
    </FirebaseContext.Provider>
  );
}

然后我通过执行以下操作访问整个应用程序:

一些组件.ts

const firebase = useFirebase();

问题

useFirebase.ts文件中,我nullReact.createContext(null)

在此处输入图像描述

我怎样才能摆脱这种冲突?

注: props.firebase类型为firebase.app.App

我通常会打电话createContextnull这就是 Typescript 抱怨的原因。

下面的代码似乎可以解决问题,但我不想用{}null 代替。

export const FirebaseContext = React.createContext({} as firebase.app.App);

4

1 回答 1

3

尝试输入createContext

const FirebaseContext = React.createContext<firebase.app.App | null>(null);

有关更有用的信息,请参阅React TS Cheatsheet

于 2020-08-14T13:47:02.173 回答