23/11/08 til 리액트 숙련주차 (1)
2023. 11. 9. 01:08ㆍ카테고리 없음
import "./App.css";
import styled from "styled-components"; //yarn add styled-components 이거 터미널에 써서 다운로드 받은후
//임포트 해야 사용가능 const Stcontain = styled.div`
display: flex; // 요 변수를 태그명으로한 곳의 스타일을 변경가능
`; //근데 이거 변수명을 대문자로 써야함 왜 안되는지 한참갸우뚱함
const Styledbox = styled.div` //이하동문
width: 150px;
height: 150px;
border: 1px solid ${(props) => props.borderColor}; // 요거 대박 //이게 자식컴포넌트라서 대문자를 써야되나봄
margin: 15px; //딸라표시는 백틱안에 있어서 그런듯
background-color: ${(props) => {
return props.background;
}};
`;
const bOxList = ["red", "blue", "green"]; // 이거는 컴포넌트가 아니라 소문자로 변수명써도 되는듯
const getboxname = (color) => {
switch (color) { //스위치문 낯설다.
case "red":
return "빨강박스";
case "green":
return "초록박스";
case "blue":
return "파랑박스";
default:
return "검정박스";
}
};
function App() {
return (
<Stcontain>
{/* <Styledbox borderColor="red" background="green">
{" "}
빨강
</Styledbox>
<Styledbox borderColor="blue"> 파랑</Styledbox>
<Styledbox borderColor="black"> 블랙</Styledbox> */}
{bOxList.map((box) => { //저 박스리스트를 맵으로 돌리는데
return <Styledbox borderColor={box}>{getboxname(box)}</Styledbox>;
})} //여기서 겟박스네임호출 인자로 box줘서 박스리스트의 요소들과 일치시킴
</Stcontain> //그리고 보더칼라는 자식컴포넌트로 프롭스 값을 준거임
);
}
export default App;
//숙련 첫번째 강의 인데 어지럽네?
import "./App.css";
import styled from "styled-components"; // 버튼 누르면 넘버가 증가하는 로직
import { useState } from "react";
function App() {
const [number, setnumber] = useState(0);
return (
<>
<div>numberstate : {number}</div>
<button
onClick={() => {
// setnumber(number+1) // 이게 평소 쓰는 셋넘버 로직인데 온클릭한번에 셋넘버가 한번
// setnumber(number+1) //작동되서 1만 올라감 배치성이라서 그런다고함
// setnumber(number+1)
setnumber((currentnum) => currentnum + 1); // 이건 함수형인데 현재 넘버를 인자로 받고
setnumber((currentnum) => currentnum + 1); //함수화한게 새로운 현재넘버가 됨
setnumber((currentnum) => currentnum + 1); // 요건 온클릭 한번으로 3이 올라감
}}
>
누르면 증가
</button>
</>
);
}
export default App;
그렇다고 함 하하
import "./App.css";
import styled from "styled-components"; // 유즈 이펙트
import { useEffect, useState } from "react"; // 유즈 스테이트를 사용해서 인풋태그에 값이 찍힐
//때마다 셋밸류하게 설정function App() { // 그러면 인풋에 타이핑 할때마다 유즈이펙트도 리랜더링됨
const [value, setvalue] = useState("");
useEffect(() => {
console.log("하하"); //하하 가 콘솔로그로 계속찍힌다는말임
}, []); // 유즈 이펙트는 함수를 갖게 하는데 이때 이함수 뒤에 콤마 대괄호
//를 멕이면 리랜더링되도 유즈 이펙트가 작동안됨
useEffect(() => { //대괄호 안에 값이 바뀔때 랜더링하라는 설정임
console.log(`호호 : ${value}`);
}, [value]); //이렇게 하면 밸류가 바뀔때마다 작동하라는 설정임
//아래의 유즈이펙트는 인풋에 타이핑 할때마다 호호와밸류가 찍힘 return (
<>
<input
type="text"
value={value}
onChange={(e) => {
setvalue(e.target.value);
}}
></input>
</>
);
}
export default App;