[React] return null vs return false
๐ return null vs return false
์ง๊ธ๊น์ง ์งํํ๋ ํ๋ก์ ํธ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ null์ false๋ก ์ธ์ํด boolean ์ฒดํน์ ํ๊ธฐ ๋๋ฌธ์, booleanํ์ ์ผ๋ก ํ๋ณํ์ ๊ฑฐ์น์ง ์๊ณ ๊ทธ๋๋ก null๋ฅผ ๋ฐํํด์ ์ฌ์ฉํ๋ค.
ํ์ง๋ง ๋ฆฌ์กํธ์ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ๊ณ ๋ คํ๋ค๋ฉด, ์ด ๋์ ๋ช ํํ ๊ตฌ๋ถํด์ ์ฌ์ฉํ ํ์๊ฐ ์๋ค.
โ null ๋ณด๋ค๋ false๋ฅผ ์ฌ์ฉํ์!
null๊ณผ false๋ฅผ ๋ฐํํ๋ ๊ฒ์ ๋ํ ์ฐจ์ด์ ์ ๋ฐ๋ก ๋งํ์๋ฉด, ๋ฆฌ๋ ๋๋ง์ ์ ๋ฌด์ด๋ค.
๋ฆฌ์กํธ๋ null๋ฅผ ์ ํจํ ๊ฐ์ผ๋ก ์ทจ๊ธํ๋ค.
์ด๋ง์ธ ์ฆ์จ ๋ฆฌ์กํธ์ ๊ฐ์ ๋์ด null์ ์ธ์ํ์ฌ null์ ๋ฐํํ๋ ํ์ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ง ์ปดํฌ๋ํธ๋ค์ด ๊ฐ์ ๋ก ๋ฆฌ๋ ๋๋ง ๋๋ค๋ ๋ป์ด๋ค.
function Parent() {
return (
<div>
<Child />
</div>
);
}
function Child() {
const [count, setCount] = useState(0);
useEffect(() => {
console.log("Child rendered");
});
if (count === 0) {
return null;
}
return (
<div>
<button onClick={() => setCount(count - 1)}>-</button>
{count}
<button onClick={() => setCount(count + 1)}>+</button>
</div>
);
}
- ํ์ ์ปดํฌ๋ํธ์ธ Children์ด null์ ๋ฐํํ ๋, ์์ ์ปดํฌ๋ํธ์ธ Parent๊ฐ ๊ฐ์ ๋ก ๋ฆฌ๋ ๋๋ง ๋๋ค.
์ด ํ์์ ๋ฐฉ์งํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด false๋ฅผ ๋ฐํํ๋ ๊ฒ์ด๋ค.
function Parent() {
return (
<div>
<Child />
</div>
);
}
function Child() {
const [count, setCount] = useState(0);
useEffect(() => {
console.log("Child rendered");
});
if (count === 0) {
return false;
}
return (
<div>
<button onClick={() => setCount(count - 1)}>-</button>
{count}
<button onClick={() => setCount(count + 1)}>+</button>
</div>
);
}
- ํ์ ์ปดํฌ๋ํธ์ธ Children์ด false๋ฅผ ๋ฐํํ ๋, ์์ ์ปดํฌ๋ํธ์ธ Parent๊ฐ ๋ฆฌ๋ ๋๋ง ๋์ง ์๋๋ค.
๋ฆฌ์กํธ์ ๊ฐ์๋์ด false๋ฅผ ์ธ์ํ์ง ์๊ธฐ ๋๋ฌธ์, ์์ ์ปดํฌ๋ํธ์์ ๋ฆฌ๋ ๋๋ง์ด ๋ฐ์ํ์ง ์๋๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
๐ ์ ๋ฆฌ
return | null | false |
---|---|---|
์ฐจ์ด์ | ์์ ์ปดํฌ๋ํธ ๋ฆฌ๋ ๋๋ง O | ์์ ์ปดํฌ๋ํธ ๋ฆฌ๋ ๋๋ง X |
๋น์ง๋์ค๋ก์ง์ด ์๋ ๋ทฐ๋ก์ง์ผ๋ก์ ์๋ฌด๊ฒ๋ ๋ฐํํ์ง ์๊ฒ ๋ค๋ ๋ป์ผ๋ก ์ฌ์ฉํ ๋๋ false๋ฅผ ์ฌ์ฉํด ๋ฆฌ๋ ๋๋ง์ ๋ฐฉ์งํ ์ ์๋ค.
๐ฌ ์ต์ ๋๊ธ