Edit: Answer Below
I've followed both of these tutorials on youtube (currently there aren't too many) but none of them work for me, it sends me this error from the Provider in the index.js:
Tutorial 1: video and code
Tutorial 2: video and code
Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.
My code Context.js file:
import React from 'react'
export const Context = React.createContext();
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import {BrowserRouter} from 'react-router-dom'
import { ApolloClient } from 'apollo-client'
import { HttpLink } from 'apollo-link-http'
import { InMemoryCache } from 'apollo-cache-inmemory'
import { ApolloProvider } from 'react-apollo';
import { Context } from './Context'
const client = new ApolloClient({
link: new HttpLink({ uri: process.env.API_URL }),
cache: new InMemoryCache()
})
ReactDOM.render(
<Context.Provider value={{text: 'ok'}}>
<BrowserRouter>
<ApolloProvider client={client}>
<App />
</ApolloProvider>
</BrowserRouter>
</Context.Provider>
, document.getElementById('root'));
registerServiceWorker();
I tried/checked:
Double checking I have 16.3.1 installed
putting context in or outside <BrowserRouter>
Tried {Context} vs Context
reinstalling NPM packages
putting in { text: 'ok' } inside of createContext()
I tried 'create-react-context' and still got the same error, maybe this is a clue? I am not sure
tried [email protected] which works in tutorial
Some other stuff I have no forgot.
EDIT: Answer below
Check if you have react-dom 16.3.1
I figured it out. This is a rookie mistake, but I needed to install [email protected].*
, installing react 16.3.* is not sufficient. If anyone else has the error message:
Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.
This may be why - You have a package that isn't fully updated.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With