useState를 불러오고 '=' 연산자로는 title에 새로운 값을 할당하지 않음
그래서 const가 최선.
input에 입력한 값을 가져올 수 있는 event.
useState는 하나의 컴포넌트 안에 여러 개 불러올 수 있고
불러온 useState들은 서로 완전히 분리된 형태로 작동한다.
useState를 각각 선언하여 개별 Handler함수를 구성한다.
const [enteredTitle, setEnteredTitle] = useState('');
const [enteredAmount, setEnteredAmount] = useState('');
const [enteredDate, setEnteredDate] = useState('');
const amountChangeHandler = (event) => {
setEnteredAmount(event.target.value);
};
const amountChangeHandler = (event) => {
setEnteredAmount(event.target.value);
};
const amountChangeHandler = (event) => {
setEnteredAmount(event.target.value);
};
const [userInput, setUserInput] = useState ({
enteredTitle: '',
enteredAmount: '',
enteredDate: ''
});
const titleChangeHandler = (event) => {
setUserInput({
...userInput,
enteredTitle: event.target.value
})
};
const amountChangeHandler = (event) => {
setUserInput({
...userInput,
enteredAmount: event.target.value
})
};
const dateChangeHandler = (event) => {
setUserInput({
...userInput,
enteredDate: event.target.value
})
};
const [userInput, setUserInput] = useState ({
enteredTitle: '',
enteredAmount: '',
enteredDate: ''
});
const titleChangeHandler = (event) => {
setUserInput((prevState) => {
return {...prevState, enteredTitle: event.target}
});
};
const amountChangeHandler = (event) => {
setUserInput((prevState) => {
return {...prevState, enteredAmount: event.target}
});
};
const dateChangeHandler = (event) => {
setUserInput((prevState) => {
return {...prevState, enteredDate: event.target}
});
};
생활코딩 리액트 강의 -> 인프런 제로초 리액트 강의 -> 노마드코더 리액트 강의로 넘어가기로...(+ react공식문서도 같이 읽기!)
유데미 리액트 강의 자막 품질이 너무 안 좋다ㅠ
function solution(N, stages) {
let answer = []; // 실패
let failArr = []; // 스테이지별 실패율, 스테이지번호를 2차원 배열로 저장
let tmpNum=stages.length; // 사람 수 카운트 (push한 이후에 계속 빼야함)
for (let i=1; i<=N; i++) {
let tmp=0; // 클리어못한 스테이지 카운트
for (let j=0; j<stages.length; j++) {
if (i===stages[j]) tmp++;
}
failArr.push([i, Number((tmp/tmpNum).toFixed(3))]);
tmpNum-=tmp;
}
failArr.sort((a, b) => { // 2차원배열 sort정렬!
if(a[1]===b[1]) return a[0]-b[0];
else return b[1]-a[1];
});
for (let i=0; i<failArr.length; i++) {
answer.push(failArr[i][0]);
}
return answer;
}
let n = 5;
let stages = [2,1,2,6,2,4,3,3];
console.log(solution(n, stages));
...였는데...테스트케이스는 통과했는데 제출했더니 절반이상이 틀렸다고 나온다. 사람들이 얘기하는 거 보면 vscode와 프로그래머스 ide가 0으로 나누는 것에 대해 처리하는 게 다르다는 것 같긴 하던데 일단 내일 다시 시도하는걸로ㅠ
우리가 JSX문법으로 기재해도 리액트가 웹브라우저에게 html태그로 컨버팅해서 전달해준다.
TOC(table of content) = 목차
같은 컴포넌트라도 컴포넌트마다 다른 값을 설정해줄 때 props를 사용한다.
class App expends Component {
constructor(props){
super(props);
}
render() {
return (
);
}
}
render보다 먼저 실행되면서 컴포넌트를 초기화 시킬 때 쓰는 코드는 랜더 위에 constructor를 짜고 그 안에 코드를 작성한다.
constructor함수는 초기화를 담당한다.