React
[React] react 다시3(+아이콘 넣기)
쿨키드
2022. 9. 20. 23:11
react 다시3
+아이콘 넣기
구조분해할당
서버프로그램 php, jsp 등
이벤트커런트타겟은 이벤트를 걸어준 자신
이벤트타겟는 실제로 누러주는 것 ( input에서 값을 받아올 때 사용 多)
🟣 html을 jsx로 뿌려주는 걸 해봄
const DATA = [
{ id: 1, name: 'ㅇㅅㅇ', age: 31, sleep: true },
{ id: 2, name: 'ㅇㅁㅇ', age: 31, sleep: true },
{ id: 3, name: 'ㅇㅂㅇ', age: 31, sleep: true }
☝it과 el이 지칭하는 한 줄 한 줄
]
const List = () => {
return (
<>
{DATA[0].sleep}
</>
)
}
const List = () => {
return (
<>
{DATA[0].id}
<></> 안에서는 중괄호를 써야 자바스크트로 쓸 수 있음
{}객체로 불러오고, 키값(id)를 씀
</>
)
}
리액트에서 for문을 잘 안 돌림.
👀 리액트에서는 순회하는 방법으로 map, foreach를 주로 사용함.
-> map, filer 중요
여러개 나오는 게 하는 쉬운 방법
하지만, 많은 갯수를 해야하는 경우 귀찮음..
const List = () => {
return (
<ul>
<li> {DATA[0].name}</li>
<li> {DATA[1].name}</li>
<li> {DATA[2].name}</li>
</ul>
)
}
여러개 나오는 게 하는 쉬운 방법_map을 써서
const List = () => {
return (
<ul>
{DATA.map(it 또는 el => <li>{it.name}</li>)}
</ul >
)
}
👉 화살표 함수.ver
const List = () => {
return (
<ul>
{DATA.map(it => { return <li>{it.name}</li> })}
</ul >
)
}
const List = () => {
return (
<ul>
{
DATA.map(
(it, idx) =>
<li key={it.id}> idx값 대신에 id값을 사용
{idx + 1}번 {it.name}은 {it.age}살 {it.sleep ? '자고 있음' : '놀고 있음'}
</li>)
}
☝와 같음👇
{DATA[0].name}은 {DATA[0].age}살 {DATA[0].sleep && '자고 있음'},
{DATA[1].name}은 {DATA[1].age}살 {DATA[1].sleep && '자고 있음'},
{DATA[2].name}은 {DATA[2].age}살 {DATA[2].sleep && '자고 있음'}, */}
{/* DATA 0의 name */}
{/* {DATA[0].sleep && '자고 있음'} = sleep이 true면, 자고있음을 나오게 한다
{DATA.map(it => { return <li>{it.name}</li> })}
</ul >
)
}
에러가 떠서 key를 추가함.
리액트는 O(N)의 시간복잡도로 두 트리를 비교하기 위해 key 속성을 사용하고, 자식 요소들을 반복적으로 렌더링하는 상황에서 명시적으로 key를 사용한다.
즉, 트리를 비교할 때 key 값을 비교하고 key가 달라지면 렌더링도 다시하게 된다. 또한 key 값을 통해 추가되는 데이터 및 요소의 위치를 잡아주기도 한다.
.slice(0, 2).reverse()
reverse : 매소드 체인지
useEffect : 한 번만 렌더링이 될 수 있게 함
스크롤이벤트, 셋타임아웃 등
const App = () => {
const [data, setData] = useState([]);
useEffect(() => {
fetch('https://jsonplaceholder.typicode.com/todos')
.then(response => response.json())
.then(json => setData(json)) 👉 외부에 있는 데이터를 가지고 와서 사용할 때, fetch를 사용
}, [])
return (
<>
{console.log(data)}
</>
)
}
export default App;
👀 tab menu는 배열로 해서 번호를 가질 수 있게 짜야함
<ul>
<li>menu01</li>
<li>menu02</li>
<li>menu03</li>
</ul>
import { useState } from "react";
const TabData = [
{ id: 1, title: "menu01", content: "content01" },
{ id: 2, title: "menu02", content: "content02" },
{ id: 3, title: "menu03", content: "content03" }
]
const Tab = () => {
const [num, setNum] = useState(0)
return (
<>
<ul>
{
TabData.map((el, idx) => (
<li key={el.id}
onClick={() => setNum(idx)}
className={num == idx ? 'on' : ''} 👉on 붙이는 법
>
{el.title}
</li>
))
}
</ul>
<div className="content">
{TabData[num].content}
</div>
</>
)
}
export default Tab;
📌 리액트에 아이콘 넣는 법
import { BsFillCloudLightningFill } from "react-icons/bs"
👉 { } 중괄호 안에는 내가 사용하려고 하는 실질적인 아이콘의 이름?을 복사해서 붙여 넣는다.
<span onClick={() => {
setToggle(!toggle)
}} className={toggle ? 'btn on' : 'btn'}>
<BsFillCloudLightningFill />
</span>
👉 마자막으로 쓰려고 하는 부분에 </>에 넣어준다.