참고용 velog
https://velog.io/@ty-yun21/react5
참고용 github
https://github.com/ty-yoon21/react-study1
commit message :
return (
<Hello name='react' />
);
const Hello = (props) => {
return <div>안녕하세요 {props.name}</div>
}
2.2 여러개의 props
2.3 defaultProps로 기본값 설정
Hello.defaultProps = {
name: 'noname'
}
2.4 props.children
: 컴포넌트 태그 사이에 넣은 값 조회시 props.children 사용
(Ex. wrapper아래에 컴포넌트 넣을 시 그냥은 안보인 Wrapper의 div 사이에 {children} 넣어줘야 함)
const [number, setNumber] = useState(0);
3.2 input 상태관리
const [text, setText] = useState('');
const onChange = (e) => {
setText(e.target.value);
};
// e : 이벤트 객체
// e.target : 이벤트가 발생한 DOM을 가르킴 (여기서는 input DOM)
// DOM 의 value : e.target.value
3.2 여러개 input 관리
const [inputs, setInputs] = useState( {
name: '',
nickname: ''
} );
const {name, nickname} = inputs; // 비구조화 할당을 통해 값 추출
const onChange = (e) => {
const { value, name } = e.target; //우선 e.target에서 name과 value를 추출
setInputs({
...inputs, //기존의 input 객체를 복사한 뒤 (스프레드 문법)
[name] : value //name키를 가진 값을 value로 설정
});
};
const nameInput = useRef();
const {name, nickname} = inuts;
const onReset = () = {
setInputs({
name: '',
nickname: ''
});
nameInput.current.focus();
};
return (
<div>
<input
name="name"
placeholder="이름"
ref={nameIput}
/>
</div>
)
const users = [
{
id: 1,
username: 'velopert1'
},
{
id: 2,
username: 'velopert2'
}
];
return (
<div>
{users.map(user => (
<User user={user} key={user.id} />
))}
</div>
)
// 동적인 배열을 렌더릴 할때 자바스크립트 배열의 내장함수 map()을 사용
// users을 값들을 user객체로 받아와서 객체 수 만큼 뿌려줌 (내 생각) 객체의 정확한 의미는?
// 배열을 렌더릴할 때는 key라는 props를 설정해야 함... (key는 각 원소들이 가지고 있는 고유값...)
const users = [
{
id: 1,
username: 'velopert1'
},
{
id: 2,
username: 'velopert2'
}
];
const nextId = useRef(3);
const onCrate = () = {
nextId.current += 1;
}
return (
<div>
{users.map(user => (
<User user={user} key={user.id} />
))}
</div>
)