Hooks: useContext()
Uke | Tema |
---|---|
42 | React Router DOM |
43 | Redux toolkit |
44 | Hooks: useReducer() + useSelector() (NB! med forbehold) |
45 | Repetisjon |
46 | Lese uke |
47 | Webtek. eksamen utlevering |
48 | Webtek. eksamen innlevering |
49 | Eksamen utlevering |
50 | Eksamen innlevering |
Dekket
Skal dekke
Burde sjekkes ut
Ekstern for react
Parent
Child
GrandChild
GrandChild
Child
Parent
Child
GrandChild
GrandChild
Child
Provider
Consumer
Consumer
Consumer
Consumer
Provider
Consumer
Consumer
Consumer
Consumer
// Contexts/UserContext.js
import { createContext } from 'react';
export const UserContext = createContext(null);
// App.js
import { UserContext } from './Contexts/UserContext.js';
export const App = () => {
const firstName = 'Ola';
const lastName = 'Nordmann';
const age = 21;
// ...
return (
<UserContext.Provider value={{ firstName, lastName, age }}>
// ...
</UserContext.Provider>
);
}
// Student/Student.jsx
import { UserContext } from '../Contexts/UserContext.js';
import { useContext } from 'react';
export const Student = () => {
const userContext = useContext(UserContext);
// ...
return (
<div>
name: {userContext.firstName} {userContext.lastName}
age: {userContext.age}
</div>
);
}
TypeScript
// Contexts/UserContext.ts
import { createContext } from 'react';
export interface UserContextType {
firstName: string;
lastName: string;
age: number;
}
export const UserContext = createContext<UserContextType>({} as UserContextType);
Andre alternativer for initialState
// Contexts/UserContext.ts
import { createContext } from 'react';
export interface UserContextType {
userName: string;
setUserName: React.Dispatch<React.SetStateAction<string>>;
}
export const UserContext = createContext<UserContextType>({} as UserContextType);
// App.js
import { useState } from 'react';
import { UserContext } from './Contexts/UserContext.js';
export const App = () => {
const [userName, setUserName] = useState('My Initial Username');
// ...
return (
<UserContext.Provider value={{ userName, setUserName }}>
// ...
</UserContext.Provider>
);
}
// Student/Student.jsx
import { UserContext } from '../Contexts/UserContext.js';
import { useContext } from 'react';
export const Student = () => {
const userContext = useContext(UserContext);
// ...
return (
<div>
user name: {userContext.userName}
// ...
<button onClick={() => userContext.setUserName('set New Username')}>
Change username
</button>
</div>
);
}
Neste gang: React Router DOM