I would like to create a globalState to track a few properties I would like to pass down to multiple components.
const initialState = {
nickname: '',
selectedRoom: null,
rooms: [],
createdRoomTopic: '',
twilioToken: '',
device: null
};
const RoomContext = createContext(null);
export const RoomContextProvider = ({ children }) => {
const[state, setState] = useState(initialState);
return (
<RoomContext.Provider value={[state, setState]}>{children}</RoomContext.Provider>
)
};
export const useGlobalState = () => {
const value = useContext(RoomContext)
if(value === undefined) throw new Error('Please add RoomContextProvider');
return value;
}
However when I use this 'global state' in a component
import { useGlobalState } from '../../context/RoomContextProvider';
....
const [state, setState] = useGlobalState();
My page does not render and I get the error message:
Uncaught TypeError: object null is not iterable (cannot read property Symbol(Symbol.iterator))
UPDATE Here's an example of where I used useGlobalState
import { useGlobalState } from '../../context/RoomContextProvider';
...
<useGlobalState>
<SignupForm/>
<useGlobalState/>