React
Hooks: useEffect()
Agenda
- Hooks: useEffect() !!!
- useEffect() bakgrunn
- useEffect() vs componentdidmount etc
- useEffect()
- Custom hooks (???)









useEffect()
- Tillater å utføre sideeffekter i en komponent
- Simulere livssyklusene i en funksjonell komponent
- Default → Kjører etter hver render
- Kan spesifisere å trigge basert på endringer i verdi
- Returnerer en funksjon for å "rydde opp" koden
- 2 Parametere
- Callback funksjon
- Array → følger med på verdiene i arrayet
- Typisk plassert på toppen
useEffect(() => {
console.log('effect: ', counterState);
return () => {
console.log('clean up: ', counterState)
}
}, [counterState])
class
- componentDidMount()
- componentDidUpdate()
- componentDidUnmount()
- componentWillMount()
- componentWillUpdate()
- componentWillUnmount()
functional
- useEffect
componentDidMount() {
console.log('...');
}
useEffect(() => {
console.log('...');
}, [])
// componentDidMount
useEffect(() => {
// Your code here
}, []);
// componentDidUpdate
useEffect(() => {
// Your code here
}, [yourDependency]);
useEffect(() => {
// Your code here
// componentWillUnmount
return () => {
// Your code here
}
}, [yourDependency]);
import { useEffect, useState } from 'react';
const AgeChecker = () => {
const [age, setAge] = useState(0);
const [message, setMessage] = useState('');
useEffect(() => {
if (age < 18) {
setMessage('Ikke myndig');
} else {
setMessage('Myndig');
}
}, [age])
return (
<div>
<h1>Age: {age}</h1>
<button onClick={() => setAge(age + 1)}>
Increment age
</button>
<p>{message}</p>
</div>
);
}
export default AgeChecker;
// Hver render
useEffect(() => {
// Your code here
});
// Kun ved mount
useEffect(() => {
// Your code here
}, []);
// Kun dersom verdien til avhengighetene endrer seg
useEffect(() => {
// Your code here
}, [yourDependency]);

import { useEffect, useState } from 'react';
const AgeChecker = () => {
const [age, setAge] = useState(0);
const [message, setMessage] = useState('');
useEffect(() => {
if (age < 18) {
setMessage('Ikke myndig');
} else {
setMessage('Myndig');
setAge(12)
}
}, [age])
return (
<div>
<h1>Age: {age}</h1>
<button onClick={() => setAge(age + 1)}>
Increment age
</button>
<p>{message}</p>
</div>
);
}
export default AgeChecker;


Custom Hooks
Custom hooks
- Gjenbrukbarhet
- i forhold til → logikk
- Custom Hooks starter med "use".
- For eksempel: useAgeChecker()
import { useEffect, useState } from "react";
const useAgeChecker = (age) => {
const [ageMessage, setAgeMessage] = useState('');
useEffect(() => {
if (age < 18) {
setAgeMessage('Ikke myndig');
} else {
setAgeMessage('Myndig');
}
}, [age])
return ageMessage;
};
export default useAgeChecker;
import useAgeChecker from './useAgeChecker';
const MyComponent = () => {
const age = 20;
// Bruk useAgeChecker hooken
const ageMessage = useAgeChecker(age);
return (
<div>
<p>Alder: {age}</p>
<p>Status: {ageMessage}</p>
</div>
);
}
import { useEffect, useState } from "react";
const useAgeChecker = (age) => {
const [ageMessage, setAgeMessage] = useState('');
useEffect(() => {
if (age < 18) {
setAgeMessage('Ikke myndig');
} else {
setAgeMessage('Myndig');
}
}, [age])
return ageMessage;
};
export default useAgeChecker;

Debugging + Testing
- Debugging
- console.log()
- Lese log i nettleseren
- Debugger kommando
- Testing
- Generelt testing
- Jest
Neste gang
4. Hooks: useEffect()
By dawood11
4. Hooks: useEffect()
4. Hooks: useEffect()
- 72