공부 31

[React] Study #8 | 여러개의 input 상태 관리하기 (useState)

이번엔 input이 여러개일 경우 어떻게 관리해야하는지 알아보자! 구현해볼 것은 이름과 닉네임을 입력하면 값 옆의 부분에 같이 입력이 되고, 초기화를 시키면 이름과 닉네임이 모두 초기화! 💡Idea input의 개수가 여러개가 됐을 때는, 단순히 useState를 여러번 사용하고 onChange도 여러개 만들어서 구현할 수 있다. 하지만, 좋지 않은 방법! input에 name을 설정하고 이벤트가 발생했을 때, 이 값을 참조 + useState에서는 문자열이 아니라 객체 형태의 상태를 관리해주기 더 좋은 방법! import React, {useState} from 'react' function InputSample() { const [inputs, setInputs] = useState({ // 문자열이..

[React] Study #7 | input 상태 관리하기 (useState, onChange)

input 태그의 상태를 관리해보자! 구현할 것은 아래의 사진처럼 input에 입력하는 값이 하단에 나타나게 하고, 초기화 버튼을 누르면 input 값이 비워지도록 하는것. ➰사용할 것 useState : text 를 하단에 나타나게하고, 초기화를 하기 위해서 onChange 이벤트 : 이벤트에 등록하는 함수에서는 이벤트 객체 e를 파라미터로 받아와서 사용할 수 있음! e.target : 이벤트가 발생한 DOM인 input DOM을 가리킴 e.target.value : 현재 input에 입력한 값이 무엇인지 알 수 있음. import React, {useState} from 'react' function InputSample() { // text : 현재 상태, setText : text를 바꿔주는 Se..

[React] Study #6 | useState : 바뀌는 값 관리

리액트를 공부하는 초반에 조금 헷갈려했던 useEffect, useState 중 useState를 공부해보고자 한다. 사용자의 인터렉션에 따라 바뀌어야 할 때 어떻게 구현해야 하는지에 대해서..! 💡useState? react Hooks 중 하나! 함수형 컴포넌트에서도 상태를 관리할 수 있게 해주는 Hook 컴포넌트에서 동적인 값을 상태(state)라고 부른다. 따라서 useState를 사용하면 컴포넌트에서 상태를 관리할 수 있다. 1️⃣ 이벤트 설정하기 import React from 'react' function Count() { const onIncrease = () => { // button이 눌렸을 때 동작할 코드 } const onDecrease = () => { // button이 눌렸을 때..

[React] Study #5 | 조건부 렌더링

💡조건부 렌더링? 특정 조건에 따라 다른 결과물을 렌더링 하는 것을 의미 Ex) App 컴포넌트에서 Hello 컴포넌트를 사용할 때, isSpecial 이라는 props를 설정 import React from 'react'; import Hello from './Hello'; import Wrapper from "./Wrapper"; function App() { return ( ); } export default App; true는 자바스크립트 값이기 때문에 중괄호로 감싸기 EX) Hello 컴포넌트에서는 isSpecial이 true냐 false 이냐에 따라서 컴포넌트 좌측에 * 표시를 보여주겠다 삼항연산자로~ Hello.js import React from 'react'; function Hello(..

[React] Study #4 | Props를 통한 컴포넌트간의 값 전달

💡Props? Properties의 줄임말 우리가 어떠한 값을 컴포넌트에게 전달해줘야 할때, props를 사용 Props의 기본 사용법 1️⃣ 하나의 props 전달 Ex) App 컴포넌트에서 Hello 컴포넌트를 사용할 때, name 이라는 값을 전달해주고 싶을 경우 App.js import React from 'react'; import Hello from './Hello'; function App() { return ( // name값을 Hello 컴포넌트에게 보내기 ); } export default App; Hello.js (받아온 컴포넌트 사용하기) import React from 'react'; function Hello(props) { return {props.name} } export d..

[React] Study #3 | JSX의 기본규칙

💡JSX? 리액트에서 생김새를 정의할 때, 사용하는 문법 HTML처럼 생겼지만 실제로는 JavaScript! return JSX를 알아보자!; 💡 JSX의 기본규칙 1️⃣ 꼭 닫혀야 하는 태그 import React from 'react'; import Hello from './Hello'; function App() { return ( /* 여기에서 오류 발생! 꼭 로 닫아주자 */ ); } export default App; HTML에서는 input과 br 태그를 닫지 않고 사용하기도 한다! 하지만 리액트에서는 그렇게 하면 안됨! Self Closing 태그를 사용하자! /* 잘못됨 */ /* Self Closing 태그 */ 2️⃣ 꼭 감싸져야하는 태그 두개 이상의 태그는 무조건 하나로 감싸져야 한..

[React] Study #2 | Component, 컴포넌트!

1️⃣ 컴포넌트 하나 만들어보기 import react from 'react';// 리액트 불러오기 function Hello() { return 안녕하세요 } export default Hello;// Hello 라는 컴포넌트로 내보내겠다! 리액트 컴포넌트 종류 함수형 : 내가 블로그에 작성하고 공부하면서 쓸 컴포넌트 형태임! 클래스형 export default Hello; 다른 컴포넌트에서 불러와서 사용가능 2️⃣ App.js에서 Hello 컴포넌트 불러오기 import React from 'react'; //리액트 불러오기 import Hello from './Hello'; //Hello 컴포넌트 불러오기 function App() { return ( {/* 적용! */} ); } export de..

[React] Study #1 | React? React!

💡아이디어의 시작 " 어떠한 상태가 바뀌었을 때, 그 상태에 따라 DOM을 어떻게 업데이트 할 지 규칙을 정하는 것이 아니라, 아예 다 날려버리고 처음부터 모든걸 새로 만들어서 보여준다면 어떨까? " 라는 아이디어에서 시작! 아이디어의 장점 : "업데이트를 어떻게 해야할 지"에 대한 고민을 전혀 안해도 되기 때문에 개발이 쉬움 아이디어의 단점 : 모든 걸 다 날려버리고 새로 만든다? 너무 오래걸려! 하지만, 이 단점은 Virtual DOM 이라는 것을 사용해서 해결! Virtual DOM 말 그대로 메모리에 존재하는 가상의 DOM 그저 Javascript 객체! -> 속도가 빠름! 상태가 업데이트 되면, 업데이트가 필요한 곳의 UI를 Virtual DOM을 통해서 렌더링 업데이트를 어떻게 할지에 대한 고..

[Algorithm] 선택문제 알고리즘 (feat. Quick-Sort)

선택문제? n개의 숫자들 중에서 k번재로 작은 숫자를 찾는 문제 💡어떻게 해결하면 좋을까? 첫번째 방법 : 순차탐색! 최소숫자를 k번 찾는다. 단, 최소 숫자를 찾은 뒤에는 입력에서 최소 숫자를 제거 숫자제거 = 추가 수행시간 + 추가 메모리 필요 O(kn) -> 최악의 경우, n번의 순차 탐색 ! 주어진 숫자 개수 n이 크면 커질 수 있다. 두번째 방법 : 숫자들을 정렬한 후, k번째 숫자를 찾는다. O(nlogn) k가 작을 경우, 1번 방법이 유리 그렇지 않을 경우, 2번 방법이 유리 💡아이디어 이진탐색 활용 : 정렬된 입력의 중간에 있는 숫자와 찾고자 하는 숫자를 비교함으로써, 입력을 1/2로 나눈 두 부분 중에서 한 부분만을 검색 선택문제는 입력이 정렬되어 있지 않아서, 입력 숫자들 중에서 (퀵..

Algorithm 2021.09.29

[Algorithm] 합병정렬 (Merge sort)

💡합병정렬 알고리즘? 안정정렬에 속하며, 분할 정복 알고리즘의 하나 분할 정복 방법 (divide and conquer) 문제를 작은 2개의 문제로 분리하고 각각을 해결한 다음, 결과를 모아서 원래의 문제를 해결 대개 순환 호출을 이용하여 구현 (재귀적) 과정 리스트의 길이가 0 또는 1이면 이미 정렬된 것으로 본다. 그렇지 않은 경우, 정렬되지 않은 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다. 각 부분 리스트를 재귀적으로 합병정렬을 이용해 정렬 두부분 리스트를 다시 하나의 정렬된 리스트로 합병 [ 합병정렬 알고리즘의 구체적인 개념 ] 하나의 리스트를 두개의 균등한 크기로 분할하고 분할된 부분 리스트를 정렬한 다음, 두개의 정렬 리스트를 합하여 전체가 정렬된 리스트가 되게 하는 방법 ..

Algorithm 2021.09.28