Машинопись HOC с React.createContext - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть этот фрагмент кода .js, который мне нужно перевести на Typescript.

import React from 'react';

const FirebaseContext = React.createContext(null)

export const withFirebase = Component => props => (
    <FirebaseContext.Consumer>
        {firebase => <Component {...props} firebase={firebase} />}
    </FirebaseContext.Consumer>
)

export default FirebaseContext

мое лучшее предположение -

const FirebaseContext = React.createContext(null)

export const withFirebase = (Component: React.ComponentClass) => (props: any) => (
    <FirebaseContext.Consumer>
        {firebase => <Component {...props} firebase={firebase} />}
    </FirebaseContext.Consumer>
)

, но когда я пытаюсь использовать контекст - передаваяnew Firebase():

import React from 'react';
import ReactDOM from 'react-dom';

import './index.css';
import * as serviceWorker from './serviceWorker';

import App from './components/App';
import Firebase, { FirebaseContext } from './components/Firebase';

ReactDOM.render(
    <FirebaseContext.Provider value={new Firebase()}>
        <App />
    </FirebaseContext.Provider>,
    document.getElementById('root'),
);

serviceWorker.unregister()

в этом случае - я получаю Type 'Firebase' is not assignable to type 'null'.

1 Ответ

0 голосов
/ 28 февраля 2019

Похоже, вы не указали тип createContext.Добавление типа Firebase к нему должно работать

const FirebaseContext = React.createContext<Firebase | null>(null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...