์ด ๊ธ์ udemy์ React ์๋ฒฝ ๊ฐ์ด๋ with Redux, Next.js, TypeScript ๊ฐ์ข๋ฅผ ๋ฐํ์ผ๋ก ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
11. ๋ชจ๋ ์๊ฐ
- If you already know, you can move on to the next section. (for me I have to watch :-( ... )
12. let & const
- let : ๊ฐ์ ์์ ํ ์ ์๋ ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉ
- const : const๋ ํ๋ฒ ์ง์ ํ๋ฉด ์ ๋ ๋ณํ์ง ์๋ ๊ฐ์ธ ์์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉ
13. Arrow Functions
function
function printMyname(name) {
console.log(name);
}
printMyname('Max') // "Max"
function ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ
arrow function
const printMyname = (name) => {
console.log(name);
}
printMyname('Max') // "Max"
arrow function ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ
const printMyname = name => {
...
}
์ธ์๊ฐ 1๊ฐ์ธ ๊ฒฝ์ฐ์๋ () ๋ฅผ ์๋ตํ ์๋ ์๋ค.
const printMyname = => { // X
...
}
์ ๋ฌ ์ธ์๊ฐ ์์ ๊ฒฝ์ฐ์๋ ()๋ฅผ ์๋ตํ ์ ์๋ค.
const multiply = (number) => {
return number * 2
}
const multiply = number => number *2;
console.log(multiply(2)) //4
๋ฆฌํด๋ฌธ์ธ ๊ฒฝ์ฐ {}์ return ํค์๋๋ฅผ ์๋ตํ ์ ์๋ค.
14. Exports์ Imports
default export
import person from './person.js'
import prs from './person.js'
- import ์ default์ ๋ช ์๋ ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๊ฐ์ ธ์จ๋ค.
- asํค์๋๋ฅผ ํตํด alias ์ง์ ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
named export
import {smth} from './utility.js'
import {smth as Smth } from './utility.js'
import * as bundled from './utility.js'
- import ์ ์ค๊ดํธ์ export๋ ์์๋ฅผ ์ ์ด์ค์ผ ํ๋ค.
- ํ์ผ์ ๋ค์์ named export๊ฐ ์๋ ๊ฒฝ์ฐ ํน์๋ฌธ์ *๋ฅผ ์ด์ฉํ์ฌ ํ์ผ ๋ด ๋ชจ๋ ๊ฒ์ importํ ์ ์๋ค.
15. Classes
class
class Person {
name = 'Max' // Property
call = () => {...} // Method
}
- ๊ฐ์ฒด๋ฅผ ์ํ ํต์ฌ ์ฒญ์ฌ์ง
- ํ๋์ ๋ชจ๋ธ์ด ๋๋ ์ฒญ์ฌ์ง(blueprint)๋ฅผ ๋ง๋ค๊ณ ๊ทธ ์ฒญ์ฌ์ง์ ๋ฐํ์ผ๋ก ํ ๊ฐ์ฒด(object)๋ฅผ ๋ง๋๋ ํ๋ก๊ทธ๋๋ฐ ํจํด์ด๋ค. ์ฌ๊ธฐ์ ์ฒญ์ฌ์ง์ ํด๋์ค๋ผ๊ณ ํ๊ณ ์ด๋ฅผ ๋ฐํ์ผ๋ก ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ธ์คํด์ค๋ผ๊ณ ํ๋ค.
- ํด๋์ค๋ class ํค์๋๋ก ์ ์. ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง ์ ์๋ค.
- method : ํด๋์ค๋ ๊ฐ์ฒด์ ์ ์ํ ํจ์
- property : ํด๋์ค๋ ๊ฐ์ฒด์ ์ ์ํ ๋ณ์
usage
const myPerson = new Person()
myPerson.call()
console.log(myPerson.name)
- new ํค์๋๋ก ํด๋์ค์ ์ธ์คํด์ค ์์ฑํ๋ค.
Inheritance
class Person extends Master // Inheritance
- ํด๋์ค์์ ์์์ ์ฌ์ฉํ ์ ์๋๋ฐ, ์ฆ ๋ค๋ฅธ ํด๋์ค์ ์๋ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์์ํ๋ฉด ์ ์ฌ์ ์ผ๋ก ์๋ก์ด ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ๋ค๋ ๋ป์ด๋ค. (That's the idea and classes also support inheritance.Which means you have another class which you inherit from taking all its properties and methods and potentially adding new properties and methods)
Example
class Human {
constructor() {
this.gender = 'male'
}
printGender() {
console.log(this.gender);
}
}
class Person extends Human {
constructor() {
super();
this.name = 'Max'
}
printMyName() {
console.log(this.name);
}
}
const person = new Person();
person.printMyName(); // "Max"
person.printGender(); // "male"
- extends : ๋ฅผ ์ด์ฉํ์ฌ Human ํด๋์ค๋ฅผ ์์๋ฐ์ ํ์ฅํ์๋ค.
- super ์์ฑ์ : ๋ค๋ฅธ ํด๋์ค๋ฅผ ํ์ฅํ๊ณ ๋ด๋ถ์์ ์ฌ์ฉํ๊ธฐ ์ํด์ ์์ฑ์ ํจ์ ์์ super ๋ฉ์๋๋ฅผ ํ์์ ์ผ๋ก ์ถ๊ฐํด์ผ ํ๋ค. ์ ์ฝ๋์์ super๋ฅผ ๋ช ์ํด์ฃผ์ง ์์ ๊ฒฝ์ฐ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
class Person extends Human {
constructor() {
super();
this.name = 'Max'
this.gender = 'femal'
}
}
const person = new Person();
person.printMyName(); // "Max"
person.printGender(); // "femal"
→ this.gender = 'femal' ์ถ๊ฐ์ "femal" ์ด ์ถ๋ ฅ๋๋ค.
ํด๋์ค๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ฅผ ์ํ ์ฒญ์ฌ์ง์ด๋ผ๋ ๊ฒ์ ๊ผญ ์ดํดํด์ผ ํ๋ฉฐ, ํด๋์ค๋ ์์ฑ์ ํจ์์ ๋น์ทํ๊ณ ์์์ ํ๋กํ ํ์ ๊ณผ ๋น์ทํ๋ค.
16. Classes, Properties & Methods
myProperty = 'value';
myMethod = () => {...}
- ํ๋กํผํฐ์ ๊ฐ์ผ๋ก ํ์ดํ ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
- this ํค์๋๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋๋ค.
- ์ค์) ์ด๋ฅผ ์ํด์๋ ES6/Babel ๋ฌธ๋ฒ์ ์ฌ์ฉํด์ผ ํ๋ค.
Example
class Human {
gender = 'male'
printGender = () => {
console.log(this.gender);
}
}
class Person extends Human {
name = 'Max'
gender = 'femal';
printMyName = () => {
console.log(this.name);
}
}
const person = new Person();
person.printMyName(); // "Max"
person.printGender(); // "femal"
17. Spread & Rest Operators (...)
- ์ 3๊ฐ(...)๋ก ์ด๋ฃจ์ด์ง ์ฐ์ฐ์๋ก, ์ฌ์ฉ์ฉ๋์ ๋ฐ๋ผ ๊ตฌ๋ถ๋๋ค.
Spread
- Used to split up array elements OR object properties
const newArray = [...oldArray, 1, 2]
const newObject = {...oldObject, newProp:5}
Rest
- Used to merge a list of function arguments into an array
function sortArgs(...args) {
return args.sort()
}
Example
# Spread
const numbers = [1, 2, 3];
const newNumbers = [...numbers, 4]
const newNumbers2 = [numbers, 4]
console.log(newNumbers); // [1, 2, 3, 4]
console.log(newNumbers2); // [1, 2, 3, 4]
const person = {
name : 'Max'
}
const newPerson = {
...person,
age: 28
}
console.log(newPerson); // [object Object] { age: 28, name: "Max"}
# Rest
const filter = (...args) => {
return args.filter(el => el === 1);
}
console.log(filter(1,2,3,1)) // [1, 1]
→ return ํค์๋ ์์ด ๊ตฌ๋ฌธ์ ํ์ค๋ก ์์ฑํ ์๋ ์์.
18. Destructuring (๊ตฌ์กฐ๋ถํด ํ ๋น)
// ๋ฐฐ์ด์ destructuring => ๋ณ์ a, b์ ๊ฐ๊ฐ์ ๊ฐ์ ํ ๋น
[a, b] = ['Hello', 'Test'];
console.log(a); // Hello
console.log(b); // Test
// ๊ฐ์ฒด์ destructuring => ๊ฐ์ฒด๊ฐ ๋์ผํ key๋ฅผ ๊ฐ์ง ๊ฐ์ ๋์์ผ๋ก ํจ
{name} = { name:'Test', age:27 };
console.log(name); // Test
console.log(age); // undefined
- Easily extract array elements or object properties and store them in variables
- Spread & Rest Operators์ ๋น์ทํด ๋ณด์ด์ง๋ง ๋ค๋ฆ!
- Spread : ๋ชจ๋ ์์์ ํ๋กํผํฐ๋ฅผ ๊ฐ์ ธ์ ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ์ ๋ฌ
- Destructuring : ์์ ํน์ ํ๋กํผํฐ ํ๋๋ง ๊ฐ์ ธ์ ๋ณ์์ ์ ์ฅ
example
19. reference & primitive types
๊ฐ ๋ณต์ฌ
const number = 1;
const number2 = number;
console.log(number2); // 1
๊ฐ์ฒด ์์ฑ ํ ํ ๋น ์ ์ฃผ์๊ฐ์ธ ํฌ์ธํฐ๋ฅผ ๋ณต์ฌ
→ secondPerson ์ถ๋ ฅํด๋ณด๋ฉด secondPerson ๊ฐ๋ Manu๋ก ๋ฐ๋์ด ์๋ค.
→ ๋ฆฌ์กํธ์์ ๋ง์ด ํ๋ ์ค์ ์ค ํ๋๋ก ์ด๋ด ๋๋ Spread ๋ฅผ ํ์ฉํ ์ ์๋ค.
Spread์ ํ์ฉ
→ secondPerson์ ์ถ๋ ฅํด๋ณด๋ฉด ๊ธฐ์กด์ ํ ๋น๋์๋ 'Max' ๊ฐ์ด ์ ์ง๋๊ณ ์๋ค.
20. Array Functions
์ค์ํ ๋ฐฐ์ด ํจ์
- filter()
- map()
- sort()
Example
const numbers = [1,2,3]
const doubleNumArray = numbers.map((num) => {
return num * 2;
})
console.log(numbers); // [1, 2, 3]
console.log(doubleNumArray) // [2, 4, 6]
21. ๋ง๋ฌด๋ฆฌ A Refresher
- ์ฐจ์ธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ค์ํ ๋ช๋ช ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ๋ ์ ๋ํด ์ ๋ฐ์ ์ผ๋ก ์ดํด๋ณด์๋ค.
22. ์ฐจ์ธ๋ JavaScript - ์์ฝ
- 11 ~ 22 ๋ด์ฉ
23. JS Array functions
JS Array functions ์ฌํด๋ณด๊ธฐ
๐ค ๋๋์
์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ ์ ํ๋ฒ ๋ ์ ์ฒด์ ์ผ๋ก ์ ๋ฆฌํ ์ ์์ด์ ์ข์๋ค. ์์ด ๊ฐ์๋ก ๋ค์ด๋ณด๋ ค๊ณ ํ๋๋ฐ, ์๊ฐ๋ณด๋ค ์ฝ์ง ์๋ค.. ใ ใ ๊ณ์ ํด์๋ณธ์ ์ฐพ์๋ณด๊ฒ ๋๋ค... ์์ผ๋ก ๋ ์ฝ๋์ ์์ด์ ์ต์ํด์ง๋๋ก ํ์. ํ์ดํ !~~
https://www.udemy.com/course/best-react/
https://velog.io/@smj0818/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8