일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 가상면접2장
- 시스템설계방법
- 가상면접3장
- 리팩토링2판4장
- 헤드퍼스트전략패턴
- FirebaseAnalytics
- react
- Git commit 합치기
- 시스템설계면접
- formik react-query submitting not working
- 테스트코드책
- 시스템설계
- 시스템설계면접팁
- 디자인패턴
- gitsquash
- s3이미지다운로드됨
- cypressBDD
- git commit merge
- cypress React
- awss3
- 리액트구글애널리틱스
- 가상면접으로대규모시스템
- 리팩터링2판테스트
- 전략패턴
- react-ga
- git commit 협업
- formik submitting not working
- git squash
- file not found Error
- 시스템설계면접예시
- Today
- Total
mingg IT
[React] UI라이브러리를 사용하지 않은 코드 VS 컴포넌트 사용한 코드 본문
리액트의 가장 중요한 역할
UI가 데이터가 변경되면 리액트가 컴포넌트 함수를 이용해서 화면을 자동으로 갱신해줌
UI라이브러리를 사용하지 않은 코드
<html>
<body>
<div class="todo">
<h3>할 일 목록</h3>
<ul class="list"></ul>
<input class="desc" type="text"/>
<button onclick="onAdd()">추가</button>
<button onclick="onSaveToServer()">서버에 저장</button>
</div>
<script>
let currentId = 1;
const todoList = [];
function onAdd(){
const inputEl = document.querySelector('.todo .desc');
const todo ={ id: currentId, desc: inputEl.value};
todoList.push(todo);
currentId +=1;
const elemList = document.querySelector('.todo .list');
const liEl = makeTodoElement(todo);
elemList.appendChild(ilEl);
}
function makeTodoElement(todo) {
const ilEl = document.createElement('li');
const spanEl = document.createElement('span');
const buttonEl = document.createElement('button');
spanEl.innerHTML = todo.desc;
buttonEl.innerHTML = '삭제';
buttonEl.onclick = onDelete;
ilEl.appendChild(spanEl);
liEl.appendChild(buttonEl);
return liEl;
}
function onDelete(e){
const id = Number(e.target.dataset.id);
const index = todoList.findIndex(item => item.id === id);
if(index >= 0) {
todoList.splice(index, 1);
const elemList = document.querySelector('todo.list');
const liEl = e.target.parentNode;
elemList.removeChild(liEl);
}
}
function onSaveToServer() {
}
</script>
</body>
</html>
리액트로 작성한 코드
function MyComponent() {
const [desc, setDesc] = useSate("");
const [currentId, setCurrentId] = useState(1);
const [todoList, setTodoList] = useState([]);
function onAdd() {
const todo = { id: currentId, desc };
setCurrentId(currentId + 1);
setTodoList([...todoList, todo]);
}
function onDelete(e) {
const id = Number(e.target.dataset.id);
const newTodoList = todoList.filter((todo) => todo.id !== id);
setTodoList(newTodoList);
}
function onSaveToServe() {}
return (
<div>
<h3>할 일 목록</h3>
<ul>
{todoList.map((todo) => (
<li key={todo.id}>
<span>{todo.desc}</span>
<button data-id={todo.id} onClick={onDelete}>
{" "}
삭제
</button>
</li>
))}
</ul>
<inpyt
type="text"
value={desc}
onChange={(e) => setDesc(e.target.value)}
/>
<button onClick={onAdd}>추가</button>
<button onClick={onSaveToServer}>서버에 저장</button>
</div>
);
}
'FrontEnd' 카테고리의 다른 글
[React] 리액트 요소와 가상 돔 (0) | 2021.01.13 |
---|---|
[React] React.memo (0) | 2021.01.13 |
[JavaScript] 제너레이터(generator) (0) | 2021.01.12 |
[Javascript] Promise (0) | 2021.01.10 |
[JavaScript] const, var, let 차이점 (0) | 2021.01.07 |