본문 바로가기
인강\개인공부/React 강의

[React] 실전 리액트 들어가기 전 , 기본 javascript 문법 es6(ecmascript)

by 꼬바리 2021. 11. 15.

😎리액트란?

  • React 는 UI 를 구현하는 JavaScript 라이브러리
  • 웹 앱(Web App) 또는 네이티브 앱(Native App)
  • 유지보수를 쉽게 , DOM 관리  성능최적화 쉽게
  • 컴포넌트에 집중  대부분 공식 라이브러리가 없음 (높은 자유도)
  • 자바스크립트 친화적 es6 기반로 배우기가 쉽다

😎react 진도

  1. 리액트에 필요한 자바스크립트
  2. 리액트 작성법 ( state , props )
  3. hooks - useState / useRef / useEffect
  4. 스타일 :sass , styeld-component
  5. 리액트에서 ajax 요청방법 ( axios / Fetch )
  6. 성능관련 : useMemo / useCallback
  7. 상태분리 useReducer
  8. Single Page Application: spa - router
  9. 상태관리 ( context , redux )

😎react 에 필요한 es6(ecmascript) 정리하기

1. let / const

let 은 변수에 재할당이 가능하지만, const 는 변수 재선언, 재할당 모두 불가능 / {} scope
const a = 20;
console.log(a);
{
    const a = 50;
    console.log(a);
}

2. 템플릿 리터럴(Template literal) 새로운 문자열 표기법

1) backtick (`)
2) 변수 처리는 ${변수}
let a = 30;
const b = 50;
const result = a + `와` + b + `의 합은 ` + (a + b)
console.log(result);

//템플릿 리터널 형식
const result2 = `${a} 와 ${b}의 합은 ${a + b}`
console.log(result2);

const name = "오별";
const age = 31;
const addr = "서울";
const result3 = `${name} 이다 ${age} 살이다. ${addr} 산다.`;
console.log(result3);

3. 삼항연산자와 &&연산자 , ||연산자

조건 ? true 일때 : false 일때
같다 === / 다르다 !== ( react 에서 )
true && 결과 / ( false , null , undefined ) || 결과
//react JSX 영역
//아무거나 쓸수 없다.
//삼항연산자, && . || 사용가능

//react 함수영역
// if / switch-case / for 사용가능

// 삼항연산자 :  (조건) ? (참) : (거짓)  ****
// && -> 조건 && 참결과 -> 조건이 참일때 ****
// || => 조건이 거짓일때 || 거짓의 결과 * 

const isPlay1 = true;
const isPlay2 = false;
const isPlay3 = undefined;

const result1 = isPlay1 === true ? '참' : '거짓'
console.log(result1);

const result2 = isPlay2 ? '참1' : '거짓1'
console.log(result2);

const result3 = isPlay1 === true && '참결과'
console.log(result3);

const result4 = isPlay1 && '참결과'
console.log(result4);

const result5 = isPlay2 || '거짓'
console.log(result5);

const result6 = isPlay3 || '값없음'
console.log(result6);


/*
    다중 if문

    조건1 && 결과1
    조건2 && 결과2
    조건3 && 결과3
    조건4 && 결과4
*/

4. 화살표 함수

function(){} ->  () => { ... } # 매개변수가 없을 경우
function(x){} ->  (x) => { ... } # 매개변수가 한 개인 경우, 소괄호를 생략 
function(x,y){} -> (x, y) => { ... } # 매개변수가 여러 개인 경우, 소괄호를 생략할 수 없다. 
//자바 스크립트
function make1() {
    console.log("연습");
}
make1();

function make2(num1) {
    console.log(num1);
}
make2(200);

function make3(num1, num2) {
    console.log(num1, num2);
}
make3(200, 500);

// React
const make4 = () => {
    console.log("연습");
}
make4();

const make5 = (num3) => {
    console.log(num3);
}
make5(100);

const make6 = (num1, num2) => {
    console.log(num1, num2);
}
make5(100, 555);

5. push : 배열 뒷부분에 값을 삽입 ( 배열의 값이 변경된다 )

  • 배열.메서드() 중 불변성 유지
let arr = [ 1, 2, 3, 4 ];  /    arr.push( 5 ); 
const arr = [10, 20, 30, 40];
arr.push(60);
arr.push(70);
arr.push(80);
arr.push(90);
arr.push(100);
arr.push(110);
arr.push(120);

console.log(arr);

// 불변성, 원본유지, 사본을 만들어서 작업한다.
//concat() , ...스프레드 연산자

const arr1 = [10, 20, 30, 40];
const arr2 = arr1.concat();

console.log(arr1);
console.log(arr2);

const arr3 = arr1.concat(60, 70, 80, 90);
console.log(arr3);




//const 객체명 = {키 : 값, 키 : 값};
//객체명.키 , 객체명['키']

const data = [
    { id: 1, name: '홍길동1', age: 10 },
    { id: 2, name: '홍길동2', age: 20 },
    { id: 3, name: '홍길동3', age: 30 },
    { id: 4, name: '홍길동4', age: 40 },
    { id: 5, name: '홍길동5', age: 50 },
]

console.log(data[0].id, data[0].name);

const data2 = data.concat();
const data3 = data.concat({ id: 6, name: '홍길동', age: 20 });
console.log(data2);
console.log(data3);

6. concat : 다수의 배열을 합치고 병합된 배열의 사본을 반환 **기존의 배열은 건드리지 않음 ** 불변성유지

const arr = [0, 1, 2]; const arr1 = arr.concat(3); // 결과 [0, 1, 2, 3]
7. slice
slice( startIndex, endIndex)
배열의 startIndex 부터 endIndex 까지(endIndex 는 불포함)에 대한 shallow copy 를 새로운 배열 객체로 반환
**기존의 배열은 건드리지 않음 **

8. map ( 반복문 )

배열.map((요소, 인덱스 ) => {
  return 요소
  });
//JSX 영역 = 반복문 map
const arr = [10, 20, 30, 40];

// 기본 구조
/* 
arr.map((현재값, 인덱스) => {
    return (결과);
})
*/

arr.map((item, index) => {
    return (console.log(index, item))
})
console.log('-----------------------------');
//결과가 1개 일때, ***
arr.map((item, index) => console.log(index, item))

console.log('-----------------------------');

const data = [
    { id: 1, name: '홍길동1', age: 10 },
    { id: 2, name: '홍길동2', age: 20 },
    { id: 3, name: '홍길동3', age: 30 },
    { id: 4, name: '홍길동4', age: 40 },
    { id: 5, name: '홍길동5', age: 50 },
]

data.map((item, index) => {
    return (console.log(index, item.id, item.name, item.age))
})

console.log('-----------------------------');

data.map((item, index) => { console.log(index, item.id, item.name, item.age) })

9. filter

filter 도 map 함수와 마찬가지로 콜백함수를 인자로 받는데 모든 원소를 한번씩 돌리면서 콜백함수의 몸체부분에서 true 를 반환하는 원소들만 걸러줌 결과 배열

const newArr = arr.filter( xx => 조건 )

10. find ( findIndex)

형식은 filter 와 비슷 , 결과는 하나의 값

const newArr = arr.find( xx => 조건 )
//JSX 영역  - filter 결과 [] 배열
//const newArr = arr.filter( xx => 조건 ) 
const arr = [10, 20, 30, 40, 50];

const result1 = arr.filter(item => item > 20)
console.log(result1);

const result2 = arr.filter(item => item === 30)
console.log(result2);

const result3 = arr.filter(item => item !== 30)
console.log(result3);

console.log('-----------------------------');

const data = [
    { id: 1, name: '홍길동1', age: 10 },
    { id: 2, name: '홍길동2', age: 20 },
    { id: 3, name: '홍길동3', age: 30 },
    { id: 4, name: '홍길동4', age: 40 },
    { id: 5, name: '홍길동5', age: 50 },
]

const data1 = data.filter(item => item.id === 3)
console.log(data1);

const data2 = data.filter(item => item.id !== 3)
console.log(data2);

const data3 = data.filter(item => item.id > 3)
console.log(data3);

console.log('-----------------------------');

//find( 현재값 => 조건)
//find는 결과 값을 하나만 가져온다.
const result4 = arr.find(item => item > 30)
console.log(result4);

const result5 = arr.find(item => item === 30)
console.log(result5);

const data4 = data.find(item => item.id === 4)
console.log(data4);

console.log('-----------------------------');
//index of?
const arr = ['고구마', '감자', '고기', '고사리', ' 수박', '고슴도치']
const txt = '고'

const result = arr.filter(item => item.indexOf(txt) !== -1)
console.log(result);

11. 객체

객체를 선언 할 때에는 이렇게 { } 문자 안에 원하는 값들을 넣준다 
키: 원하는 값 const dog = { name: '멍멍이', age: 2  };
dog.name , dog.age 

12. 비구조할당 ( 구조분해 )

const object = { a: 1, b: 2 , c:10 }; 
const { a, b , c} = object   12
        const dog = {
            name : '치와와',
            age : 3
        }

        console.log(dog.name);
        console.log(dog['name']);
        
        //구조분해 할당, 비구조 할당
        const {name , age} = dog;
        console.log(name, age);

        const data = {
            a : 10 , b : 20 , c : 50
        }

        const { a, b, c} = data;
        console.log(a , b, c);

13. spread... ( 전개 연산자 )

const ani = ['개', '고양이', '참새'];
const ani1 = [...ani, '비둘기']; 
        //스프레드 연산자
        const arr = ['dog' , ' cat' , 'rabbit'];
        const arr1 = arr.concat();
        console.log(arr1);

        //... 점세개 copy의 개념
        const arr2 = [...arr];
        console.log(arr2);

        const arr3 = arr.concat('호랑이' , '소' , '말');
        console.log(arr3);

        const arr4 = [...arr,'야야' , '미미' , '에에'];
        console.log(arr4);

        //갱신
        //스프레드 연산자는 데이터를 추가 할수도 있지만 수정도 할수있다.
        const dog = {name: '치와와' , age : 3 , addr : '서울'};
        const dog1 = {
            ...dog,
            name: '푸들',
            age : 10
        };
        console.log(dog1);

        console.log('-------------------------');

        const data = [
            {id : 1 , name : '이익순' , age : 50},
            {id : 2 , name : '오오' , age : 50},
            {id : 3 , name : '이순' , age : 50},
            {id : 4 , name : '박순' , age : 50},
            {id : 5 , name : '자익순' , age : 50},
            {id : 6 , name : '이익순' , age : 50}
        ]

        const data1 = data.map( (item , index) => {
            if(item.id === 3){
                //수정
                return {
                    ...item,
                    name : '홍길동',
                    age: 22
                }
            }else {
                //리턴
                return item;
            }
        } )
        console.log(data1);

        const data2 = data.map((item , index) => item.id ===1 ? 
                                {...item , name : '강호동'}:item);
        console.log(data2);

        const data3 = [
            ...data , 
            {
                id : 9,
                name : 'ddd', 
                age : 2
            }
        ]
        console.log(data3);

14. new Set() : 동일한 값을 하나로 만들어줌

15. reduce

배열.reduce((누적값, 현잿값, 인덱스, 요소) => {
  return 결과  
  }, 초기값)  초기값 생략하면 1 

16. forEach

배열.forEach( (요소) => { } ) 

17. 검색에 필요한 명령어

string.indexOf(찾을문자열)  
toLowerCase() 소문자변환 
정규표현식을 사용한 match() 함수 


github 페이지에 좀더 자세히 정리했습니다.

 

728x90
반응형

댓글