script는 내용에 포함 하지않음
<script>
function App() {
// let counter = 0; //기존방법으로 값을 변경
const [counter, setCounter] = useState(0); //const[변수, 함수] = 초기값
const increase =()=>{ //increase 함수를 구현
setCounter(counter + 1);
// counter = counter +1; //기존방법으로 값을 변경
};
const decrease =()=>{
setCounter(counter - 1);
// counter = counter -1; //기존방법으로 값을 변경
};
</script>
return (
<div>
<Box1 name="한국"/>
<Box1 name="미국"/>
<Box1 name="중국"/>
<div>{counter}</div> {/*버튼을 누룰때마다 증가/감소되는 카운터가 표시됨*/}
<button onClick={increase}>증가!</button>
<button onClick={decrease}>감소!</button>
</div>
);
}
공유 하는 도구로 활용장점 :
복잡한 로직 X, 독립적인 환경 O
재사용을 위한 component들 story에서 조합 및 테스트
component 문서화, 디자인 시스템에 적용해 피그마(UI 디자인툴)의 component들과 동기화
npx -p storybook sb init
=> npm run storybook 까지 입력해야 작동
main.js : stories를 위한 config 설정
preview.js : 모든 story들에 글로벌하게 적용될 포맷 세팅
Export default {
Title : 스토리북에올릴component 폴더계층구조,
Component : 스토리를 만들 컴포넌트이름
}
Export const 스토리이름= () => 해당 스토리에서 테스트할 인자가 담긴 컴포넌트
다양한 형태로 내보낼(expert) 수 있다. text, 객체, 함수 등등
export function Text({children, color, italic, underline}){ };
구현해야 할 것 중괄호{ }안에 넣음
Text.propTypes = {
children : PropTypes.string.isRequired, /*propType을 지정하지 않은 것 만으로 오류를 출력*/
color : PropTypes.string,
italic : PropTypes.bool,
underline : PropTypes.bool //T,F 만 있으면 되니까
}
https://blog.naver.com/michael_cho77/222138303091 (네이버 블로그 Hoodie Coder)
객체 component
constructor(props) {
super(props); //super : 내 위의 상위
this.setRef = this.setRef.bind(this); //this가 정확히 어떤 this 남용되는것을 줄이기 위해 bind함수로 범위를 묶어주는것 ( 이 객체에 묶어버리기)
this.handleChange = this.handleChange.bind(this);
}
import{useState} from "react"; {//주석내용} 이나 {/*주석 내용*/} 로 표현