본문 바로가기

TIL

TIL) React State, Props, 알고리즘, StringifyJSON, TreeUI

학습 내용

- React state & props

- React event handler

- 알고리즘 문제해결

- 재귀함수

- StringifyJSON, TreeUI

 

 

React state & props

 

#Props vs State

- props : 외부로부터 전달받은 값으로 바꿀 수 없다.

1) 컴포넌트 입력값(property, 속성)으로 사용

2) 부모 컴포넌트로부터 전달받은 값

3) 객체(object) 형태

4) 읽기 전용

- state : 내부에서 변화하는 값. 바꿀 수 있음

- 데이터가 props인지 state인지 확인하는 법

1) 부모로부터 전달되는가? -> props

2) 시간이 지나도 변하지 않는가? -> props

3) 컴포넌트 안에서 다른 state나 props를 갖고 계산 가능한가? -> props

 

#state 사용법

- usestate 함수를 통해 state 상태 변경

- state를 갱신하려면 state 갱신 함수를 호출

- usestate 문법 : const[state 저장 변수, state 갱신 함수] = useState(상태 초기 값)

 

#state 사용에 useState 함수가 필요한 이유

- app 함수는 1번 실행되고 끝나기 때문에 state를 동적으로 변환시켜주기 위해선
useState 함수 필요. 
- useState 함수를 통해 state 갱신 함수가 실행되면 app 함수는 변경된 상태값으로 다시 실행
- useState 함수는 지역변수를 state 값과 state 갱신 함수를 갖는 배열로 변경시켜줌

 

 

React event handler

 

#React에서 이벤트 처리하는 방법

- JSX를 사용하여 '함수'로 이벤트 처리 전달

ex) <button onClick={handleEvent}>Event</button>

- event handler 함수

1) onChange : 입력값 제어

2) onClick : 클릭하였을 때 이벤트 발생

 

<a id={t.id} onClick={event=>
   { props.onChangeMode(event.target.id) }}

*event.target = event를 유발시킨 태그 a
*event.target.id -> a 태그의 id = {t.id}

 

 

알고리즘 문제 해결

 

#다양한 for문 사용법

- for(let 변수명 of 객체) : (배열 값 순환) 배열의 요소를 하나씩 불러와 실행

- for(let 변수명 in 객체) : (객체 순환) 객체의 요소를 처음부터 하나씩 불러와서 실행 = 키와 키 값 동시에 뽑을 때 사용

 

 

재귀함수

 

#재귀함수 템플릿

function recursive(input1, input2, ...){

if(문제를 더 이상 쪼갤 수 없을 경우){
return 단순한 문제의 해답
}

return 더 작은 문제로 새롭게 정의된 문제

}

#재귀함수 작성 팁

- 배열이 인자값으로 주어지면, head랑 body로 나눠서 생각

 

 

StringifyJSON

 

#JSON 개념

- Javascript Object Notation : 데이터 교환을 위해 만들어진 객체 형태 포맷

- JSON.stringify -> object type을 JSON으로 변환 -> 직렬화(serialize)된 데이터 -> JSON.parse ->JSON을 object type으로 변환(역직렬화, deserialize)

 

#JSON 포맷

- 키: 반드시 큰 따옴표 안에 기록("key")

- 문자열 값: 반드시 큰 따옴표 안에 기록("string")

- 키와 값 사기, 키-값 쌍 사이에는 공백있으면 안됨

 

기타 CSS 문법

 

#Checkbox checked 선택자로 하위 리스트 감추기

html
<input type='checkbox'>

css
input[type="checkbox"] ~ul {
display: none;
}

input[type="checkbox"]:checked ~ul {
display: block;
}

 

기타 Javascript 문법

 

#논리 연산

- 논리곱은 &&로 연산

P Q P AND Q
TRUE TRUE TRUE
TRUE FALSE FALSE
FALSE TRUE FALSE
FALSE FALSE FALSE

- 논리합은 ||로 연산

P Q P OR Q
TRUE TRUE TRUE
TRUE FALSE TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE

 

#slice로 배열 자르기

- 방법: arr.slice(start, end), arr.slice(start)
- end번째 앞에서 잘림
- 뒤에서부터 세릴 때는 0번째부터 시작하는 게 아닌, -1번째부터 시작
example) arr.slice(0,-1) = 첫번 째 값부터 끝에서 2번째까지 자르기 

 

#typeof obj로 객체 type 확인

 

#객체 속성
- 객체의 요소(property, 속성)은 key : value 값으로 구성
- 속성 접근법 : obj.key
- 객체 안에 함수 넣을 수 있음. 객체의 속성이 함수인 것을 method라고 부름

- 객체는 index값 가지지 않으므로 .length 함수로 길이를 계산할 수 없음.

obj = { functions : function new(){} }

ex) console.log() -> console이라는 객체의 log() 함수를 호출한 것

- key-value 쌍이 아니라도 가능

 

#배열 = array
- 배열의 각각의 값 = 요소(item)

- 배열도 object의 일종

# if continue 구문

- if 문 통과한 대상에 대해서는 어떠한 행위도 하지 않고 통과할 때 사용

 

 

#... (three dot) 활용, ...이란?

- 두 가지 활용법 가짐
1)rest parameter : argument들이 배열로 함수 내부에 전달
2)spread operator로 사용 : 배열이 개별 원소로 전달됨
-> 즉 하나하나 까는 for문 넣지 않아도 알아서 개별 원소로 function 내에서 처리함

ex) 
arr = [1,2,3]
Math.max(arr) --> NaN
Math.max(..arr) --> 3

 

# 값 붙이기

- concat : 배열에 값 붙일 때 사용

1) 배열의 요소들을 하나하나씩 문자열로 추가한다

2) 배열전체를 리턴한다.

 

- push : 배열에 값 붙일 때 사용

1) 배열이 하나 통째로 뒤에 붙는다.

2) 배열의 길이를 리턴한다.

 

 

[참고]

https://velog.io/@yunkuk/TIL-03objectVSarray.

 

object 와 array의 공통점과 차이점

우리는 언제 object를 쓰고 array를 사용해야 할까?

velog.io

https://minjoo-space.tistory.com/52

 

[JavaScript] push() & concat()

오늘은 리액트를 공부하다가 미뤄놓았던 궁금증을 풀어보았다. 📖리액트를 다루는 기술📖의 6장에서 내장함수에 대한 언급이 있었는데, 거기에 concat, filter와 같은 함수가 있었다. 그런데 concat

minjoo-space.tistory.com

https://opentutorials.org/course/4900/31266

 

props - 생활코딩

강의소개 컴포넌트의 입력값인 props를 사용하는 방법을 소개합니다.  강의 소스코드 변경점 import logo from './logo.svg'; import './App.css'; function Header(props){ console.log('props', props, props.title); return {props.ti

opentutorials.org

https://opentutorials.org/course/4900/31267

 

이벤트 - 생활코딩

강의소개 리액트에서 이벤트 기능을 구현하는 방법을 소개합니다.  강의 소스코드 변경점 import logo from './logo.svg'; import './App.css'; function Article(props){ return {props.title} {props.body} } function Header(props){

opentutorials.org

https://opentutorials.org/course/4900/31268

 

state - 생활코딩

강의소개 컴포넌트 내부에서 사용하는 데이터인 state의 사용법을 소개합니다.  강의 소스코드 변경점 import logo from './logo.svg'; import './App.css'; import {useState} from 'react'; function Article(props){ return {prop

opentutorials.org

 

'TIL' 카테고리의 다른 글

TIL) 생활코딩 React delete  (0) 2022.05.15
TIL) 생활코딩 React update  (0) 2022.05.15
TIL) React, SPA, React Router  (0) 2022.05.09
TIL) Ajax 활용, JSON 파일, jQuery 몇 몇 구문  (0) 2020.09.14
TIL) 웹스크래핑  (0) 2020.09.11