목록react (35)
JiSoo's Devlog
React JS는 UI를 interactive하게 만들어 준다 React JS를 설치하기 위해서는 두 개의 JavaScript 코드를 import 해야 한다 -> react, react-dom ReactJS의 규칙 중 하나는 HTML을 페이지에 직접 작성하지 않고 JavaScript와 ReactJS를 이용해 element 생성 react-dom은 모든 React element들을 HTML body에 들 수 있게 해 준다 ReactDOM.render()은 react element를 HTML로 만들어 배치 React.createElement("span", {span의 property}, “span 내용”) property는 classname, id 가능, style도 가능 바닐라 JS에서는 HTML -> J..
양식 개발자 시각에서 폼은 폼과 그 입력 때문에 넓고 다양한 상태를 나타낼 수 있어 굉장히 복잡할 수 있다 하나 이상의 입력 값이 모두 유효하지 않을 수도 있으며 모두 유효할 수도 있고 심지어는 서버로 리퀘스트를 보낸 뒤에 특정 값이 사용 가능한지 확인해야 하는 비동기 유효성 검사를 이용해야 해서 상태를 알 수 없을 수도 있다 input 요소에서 포커스를 잃었을 때 입력값의 유효성을 검증하는 경우에 좋은 점은 전체 폼이 제출되고 경고 메시지를 보내기 전에 사용자가 유효한 값을 입력할 수 있다는 것이다 양식 제출 처리 및 사용자 입력 값 가져오기 사용자 입력을 가져오는 방법에는 크게 두 가지가 있는데 모든 키 입력마다 확인하며 이 값들을 어떤 상태 변수에 저장할 수 있고 ref를 이용해 사용자가 값을 모두..
'커스텀 훅'이란? 안에 상태를 설정할 수 있는 로직을 포함한 함수 커스텀 훅을 만들어서 재사용 가능한 함수에 상태를 설정하는 로직을 아웃소싱할 수 있다 정규 함수와는 다르게 커스텀 혹은 다른 커스텀 훅을 포함한 다른 리액트 훅을 사용할 수 있다 useState나 useReducer를 통해 관리하는 리액트 상태를 활용할 수 있다 커스텀 훅을 통해 다른 컴포넌트에서 사용할 수 있는 로직을 커스텀 훅으로 아웃소싱할 수 있으며, 이를 통해 다양한 컴포넌트에서 호출이 가능하다 로직 재사용이 가능한 메커니즘 정규 함수와 특수 함수의 관계와 같이 커스텀 훅 함수에서는 리액트 훅과 다른 훅을 사용할 수 있다 커스텀 리액트 컴포넌트 Re-Evaluation Hook 함수 생성하기 별도의 함수에 이러한 공통 로직을 아웃..

데이터베이스에 연결하지 않는 방법 리액트 앱이나 일반적인 브라우저 앱에서는 브라우저에서 실행되는 자바스크립트 코드가 데이터베이스와 직접 통신하면 절대 안 된다 데이터베이스를 데이터베이스 서버에서 실행하는 것은 문제가 안되지만 앱으로 직접 데이터를 가져오거나 저장하고 연결을 맺는 행위는 외부 환경에서 절대 해서는 안 되는 일이다 데이터베이스에 직접 접근하는 것은 성능 문제와 같은 다른 문제를 발생시킬 수 있지만 그 무엇보다 보안 이슈 사항이 가장 큰 문제이다 리액트 앱은 일반적으로 해당 백엔드 서버, 또는 백엔드 API라고 불리는 서로 다른 URL로의 요청을 전송하는 서버와 통신하게 된다 GET 요청 보내기 자바스크립트 내에서 HTTP 요청을 전송하는 내장 메커니즘이 있는데 Fetch API라고 한다 Fe..

퍼스트 클래스 기반 컴포넌트 추가하기 render() 메소드는 리액트에 필요한 특정 메소드로 리액트가 jsx 코드 안에 컴포넌트가 사용된 것을 확인하면 그때 호출하는 메소드 클래스 기반 컴포넌트에서 render() 메소드는 props를 받지 않는다 import { Component } from 'react'; import classes from './User.module.css'; class User extends Component{ render(){ return {this.props.name}; } } // const User = (props) => { // return {props.name}; // }; export default User; State 및 이벤트 작업하기 import { Compone..

리액트가 실제로 작동하는 방식 리액트는 사용자 인터페이스 구축을 위한 자바스크립트 라이브러리 리액트는 컴포넌트를 통해 사용자 인터페이스를 효과적으로 구성하며 이에 대한 업데이트 역시 컴포넌트를 통해 한다 리액트 DOM은 웹에 대한 인터페이스 리액트는 변경된 내용과 어떤 화면이든 간에 화면에 표시되어야 할 정보 모두를 현재 사용 중인 인터페이스에 전달한다 리액트 DOM은 브라우저의 일부인 실제 DOM에 대한 작업을 하므로 사용자가 보고 있는 화면에 무언가를 표시하는 역할은 리액트 DOM의 몫이다 상태가 업데이트되면 이 정보를 리액트 DOM으로 전달되어 갱신 전후의 상태 차이를 인식하고 리액트가 컴포넌트 트리를 통해 구성한 가상 스냅샷인 가상 DOM과 일치하도록 실제 DOM을 조작하는 방법을 알 수 있게 한..

"Side Effects"란? 애플리케이션에서 일어나는 다른 모든 것을 뜻한다 예를 들면 http 리퀘스트를 보내는 것, 브라우저 저장소에 무언가를 저장하는 것, 코드에서 타이머나 간격 설정 즉 일반적인 컴포넌트 함수 밖에서 일어나는 일 useEffect 훅 -> 두 개의 매개변수, 두 개의 인수와 같이 호출된다 첫 번째 인수는 함수로 지정된 의존성이 변경된 경우라면 모든 컴포넌트 평가 후에 실행되어야 하는 함수이다 두 번째 인수로는 지정된 의존성을 넣어줘야 하는데 이것은 의존성으로 구성된 배열이다 의존성이 변경될 때마다 첫 번째 함수가 다시 실행된다 첫 번째 함수에 어떤 사이드 이펙트 코드라도 넣을 수 있는데 그러면 그 코드는 우리가 지정한 의존성이 변경된 경우에만 실행되고 컴포넌트가 다시 렌더링 될 ..
JSX 제한 사항 및 해결 방법 루트 수준에서 JSX 효소들이 인접해 있으면 오류 발생 일반적으로 JSX에서 루트 JSX 요소는 1개여야 한다 값을 반환하거나 값을 변수 또는 속성에 저장하려면 그 값은 반드시 JSX 요소 1개여야 한다 인접한 요소들을 div나 사용자가 정의한 컴포넌트로 감싸면 된다 div 사용하는 대신 네이티브 자바스크립트 배열을 사용할 수도 있다 -> 키 지정 키 프롭은 우리가 만든 값으로 추가할 수도 있다 실제 DOM으로 렌더링 될 때 리액트 컴포넌트가 많이 중첩될 수 있는데 그 모든 컴포넌트들은 여러 이유로 div로 감싸거나 다른 감싸는 컴포넌트가 필요하다 너무 많은 html 요소를 렌더링 하면 궁극적으로 애플리케이션이 느려질 것이다 컴포넌트 감싸기(wrapper) 만들기 칠드런 ..

첫 번째 프로젝트 App 컴포넌트를 여러 개의 작은 컴포넌트로 분할 이벤트 처리 - 폼 제출, 재설정 버튼 클릭, 사용자 입력 변경 상태 관리 - 관리해야 하는 상태 식별 상태를 이용해 화면에 데이터 출력 스타일링 - 스타일이 지정된 컴포넌트 사용하거나 모듈 CSS 파일로 분할하는 등 '상태 올리기' 잊지 말기 앱을 컴포넌트로 분할하기 App 컴포넌트를 Header, ResultsTable, UserInput 컴포넌트로 분할 App 컴포넌트에 분할한 컴포넌트 작성하고 임포트 이벤트 처리하기 제출 이벤트 -> onSubmit prop을 내장된 form 컴포넌트에 추가, 제출 실행하는 함수 생성 리액트에서 form 제출을 처리할 때 기본값을 방지하고 싶은 경우가 많다 -> event 인수 수락해 event...

동적 인라인 스타일 설정하기 trim 메소드는 시작이나 끝부분에 과도하게 쓰인 공백을 제거해 주는 메소드 trim 메소드를 사용한 이유는 사용자가 수많은 공백을 입력한 경우 배제하기 위해서이다 enteredValue.trim().length === 0 은 입력되는 값이 비었다는 것을 알려준다 유효하지 않은 값을 입력해 줬을 때 어떤 스타일을 적용하고 싶다면 state를 사용하면 되는데 state는 사용자가 제출했는지 입력한 것이 유효한지를 나타내는 지표가 된다 가장 쉬운 방법은 레이블에 inline 스타일을 적용해 주는 방법인데 inline 스타일 props는 값으로 객체를 갖는다 그 객체에서 이 컴포넌트를 위해 이 요소에 설정할 수 있는 자바스크립트에 있는 다양한 css 스타일의 속성을 목표로 한다 c..