Вы должны сначала понять, что useContext
- это просто использование контекста и действует как потребитель, а не как поставщик.
Чтобы ответить на ваши вопросы
Нужно ли использовать HOC или это новый способ сделать это?
Вам не нужен HOCс крючкамиХуки предназначены для замены HOC и рендеринга реквизита.
Нужен ли мне Context.Provider или его новый хук?
Не существует хуков, эквивалентных Context.Provider,Вы должны использовать его как есть.
Нужно ли объявлять значение по умолчанию как нулевое, или я могу передать свой объект прямо из context.js
Значение по умолчаниюto createContext используется только в том случае, если вы не передаете value
реквизиты Context.Provider
.Если вы передадите его, значение по умолчанию будет проигнорировано.
Как я могу использовать новый Hook вместо HOC в моем коде?
Вместо использования useContext
вКомпонент, возвращаемый HOC, использует его непосредственно внутри компонента
Пример кода
/ context.js this is my hoc
// index.jsx
import App from './App'
import Firebase, { FirebaseContext } from './components/Firebase'
const FirebaseContext = React.createContext(null)
ReactDOM.render(
<FirebaseContext.Provider value={new Firebase()}>
<App />
</FirebaseContext.Provider>,
document.getElementById('root'),
)
App.jsx
const App = () => {
const firebase = useContext(FirebaseContext)
return(...)
}
export default App;