๐ก์ด์ ์ ref?
- ํน์ DOM์ ์ ํํด์ผํ ๋ ์ฌ์ฉ
- ํจ์ํ ์ปดํฌ๋ํธ์์ ์ด๋ฅผ ์ค์ ํ ๋ useRef๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ํจ
๐กref์ ๋๋ค๋ฅธ ์ฉ๋
- ์ปดํฌ๋ํธ ์์์ ์กฐํ ๋ฐ ์์ ํ ์ ์๋ ๋ณ์๋ฅผ ๊ด๋ฆฌํ ์ ์์
- useRef๋ก ๊ด๋ฆฌํ๋ ๋ณ์๋ ๊ฐ์ด ๋ฐ๋๋ค๊ณ ํด์ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง ๋์ง ์์.
- ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์์์ ์ํ๋ ์ํ๋ฅผ ๋ฐ๊พธ๋ ํจ์๋ฅผ ํธ์ถํ๊ณ ๋์ ๊ทธ ๋ค์ ๋ ๋๋ง ์ดํ๋ก ์ ๋ฐ์ดํธ ๋ ์ํ๋ฅผ ์กฐํํ ์ ์๋ ๋ฐ๋ฉด, useRef๋ก ๊ด๋ฆฌํ๊ณ ์๋ ๋ณ์๋ ์ค์ ํ ๋ฐ๋ก ์กฐํ ๊ฐ๋ฅ
- ์ด๋ค ๊ฐ์ ๊ด๋ฆฌํ ์ ์์๊น?
- setTimeout, setInterval์ ํตํด ๋ง๋ค์ด์ง id
- ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ๋ ์ธ์คํด์ค
- scroll ์์น
๐กํด๋ณผ๊ฒ?
- ๋ฐฐ์ด์ ์ ํญ๋ชฉ์ ์ถ๊ฐํ ๋, ์ํญ๋ชฉ์์ ์ฌ์ฉํ ๊ณ ์ id๋ฅผ ๊ด๋ฆฌํ๋ ์ฉ๋
1๏ธโฃ ๋ฐฐ์ด์ App ์์ ์ ์ธํ๊ณ UserList ์๊ฒ props๋ก ์ ๋ฌ
App.js
import React from 'react';
import UserList from './UserList';
function App() {
const users = [
{name: 'John', age:19},
{name: 'Car', age:20},
{name: 'lee', age:14},
];
return (
<UserList users={users}/>
);
}
export default App;
UserList.js
import React from 'react'
function User({user}) {
return(
<div>
<span>{user.name}</span>
<span>{user.age}</span>
</div>
)
}
function UserList({users}) {
return (
<div>
{/* ๋ฐฐ์ด์ ๋ ๋๋งํ ๋, key๋ผ๋ props๋ฅผ ์ค์ ํด์ฃผ๊ธฐ!! */}
{users.map(user => (
<User user={user} key={user.id}/>
))}
</div>
)
}
export default UserList
2๏ธโฃ App ์์ useRef()๋ฅผ ์ฌ์ฉํ์ฌ nextId ๋ผ๋ ๋ณ์ ์์ฑ
App.js
import React,{useRef} from 'react';
import UserList from './UserList';
function App() {
const users = [
{name: 'John', age:19},
{name: 'Car', age:20},
{name: 'lee', age:14},
];
const nextId = useRef(4);
const onCreate() => {
// ๋์ค์ ๊ตฌํ ํ ๋ฐฐ์ด์ ํญ๋ชฉ ์ถ๊ฐํ๋ ๋ก์ง
// ...
nextId.current += 1;
};
return (
<UserList users={users}/>
);
}
export default App;
- useRef()๋ฅผ ์ฌ์ฉํ ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฃ์ด์ฃผ๋ฉด, ์ด๊ฐ์ด .current ๊ฐ์ ๊ธฐ๋ณธ ๊ฐ์ด ๋๋ค.
- ์ด ๊ฐ์ ์์ ํ ๋๋ .current ๊ฐ์ ์์ ํ๋ฉด ๋๊ณ
- ์กฐํํ ๋๋ .current ๊ฐ์ ์กฐํํ๋ฉด ๋๋ค.
Reference
'React > Velopert's React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] Study #13 | ๋ฐฐ์ด์ ํญ๋ชฉ ์ ๊ฑฐํ๊ธฐ (0) | 2021.10.07 |
---|---|
[React] Study #12 | ๋ฐฐ์ด์ ํญ๋ชฉ ์ถ๊ฐํ๊ธฐ (0) | 2021.10.07 |
[React] Study #10 | ๋ฐฐ์ด ๋ ๋๋ง, key์ ์ค์์ฑ (0) | 2021.10.02 |
[React] Study #9 | useRef ๋ก ํน์ DOM ์ ํํ๊ธฐ (0) | 2021.10.02 |
[React] Study #8 | ์ฌ๋ฌ๊ฐ์ input ์ํ ๊ด๋ฆฌํ๊ธฐ (useState) (0) | 2021.10.02 |