본문 바로가기
반응형
[번역] useEffect 단순화 Photo by Christopher Burns 원문 : https://tkdodo.eu/blog/simplifying-use-effect 글에서 오타나 오역을 발견하신 경우, 댓글로 알려주시면 감사하겠습니다. 의역이 포함되어 있습니다. :D useEffect. 모두에게 필요한 훅이지만 누구도 원하지 않습니다. 리액트 공식 문서에 따르면 이것은 "리액트의 순수 함수형 세계에서 명령형 세계로 탈출하는 창구"입니다. 리덕스 원작자이자 리액트의 핵심 팀원인 댄 아브라모프(Dan Abramov)가 작성한 useEffect 완벽 가이드는 49분 분량이며, 실제로 이해하는 데 최소 두 배의 시간이 걸립니다. useEffect는 리액트에서 얻을 수 있는 만큼 복잡하고, 이것 없이 애플리케이션을 작성할 수 있을 가능성.. 2022. 9. 12.
MUI Data grid column default value 설정 방법 MUI Data grid는 기본적으로 column의 필드값이 존재하지 않으면 빈값으로 노출이 됩니다. 하지만 상황에 따라 기본이 되는 값을 변경하고 싶을 때가 있습니다. 예를 들어 날짜별로 제품의 주문횟수들을 계산할 때, 주문이 들어오지 않아 받아오는 데이터에 해당 속성이 없다면 어떻게 할까요? 코드로 확인해보겠습니다. 코드 import { Box } from '@mui/material'; import { DataGrid } from '@mui/x-data-grid'; const rows = [ { id: 1, date: '01', name: '반팔', orders: 2550, stock: 9230 }, { id: 2, date: '02', name: '코트', stock: 1872 }, { id: 3,.. 2022. 8. 30.
[React.js] 엘리먼트(Element)와 컴포넌트(Component) 엘리먼트(Element) 전 React 엘리먼트를 영화의 프레임으로 생각합니다. React 엘리먼트는 매 순간 어떻게 보여야 되는지 파악하고 변하지 않습니다. - overreacted React 앱의 화면을 표시하는 가장 작은 구성 요소로써 일반 객체(plain object)이다. 영속성을 가지지 않는다. 즉 매번 새로 만들어지고 버려진다. 불변함을 가지기 때문에 생성한 이후 해당 엘리먼트의 자식이나 props을 변경할 수 없다. 따라서 다른 렌더링을 보여주고 싶다면 새로운 엘리먼트 트리를 생성해야 한다. React 엘리먼트는 화면에 무엇을 그리고 싶은지에 대한 정보가 들어있는 객체와 같다. React.createElement( type, [props], [...children] ) type 인자로는 태.. 2021. 7. 17.
[React.js] JSX와 XSS(Cross Site Scripting) 공격 JSX 마크업과 UI 로직을 둘 다 포함하여 개발을 할 수 있다. 익숙한 문법으로 협업에 용이하다. 컴포넌트별로 분류하여 유지보수를 쉽게 할 수 있다. 속성 정의는 따옴표('')를 이용해 문자열 리터럴이나 중괄호({})로 JS 표현식(문법, 변수 등)을 삽입할 수 있다. HTML보다는 JS에 가깝기 때문에, 클래스 명명은 camelCase 명명 규칙을 사용한다. React DOM은 JSX에 삽입된 모든 값을 렌더링하기 전에 이스케이프한다. 따라서 앱에 명시적으로 작성되지 않은 내용은 주입되지 않는다. 모든 내용을 렌더링 되기 전에 문자열로 변환한다. 이런 특성들로 인해 XSS(Cross Site Scripting) 공격을 방지할 수 있다. 이스케이프(Escape) 특정 문자를 원래의 기능에서 벗어나게 변.. 2021. 7. 14.
[React.js] Netlify로 배포 후 새로고침 에러 | Page Not Found 최근 Netlify로 토이 프로젝트 배포 후 첫 로그인은 화면이 잘 뜨지만 새로고침 시 위와 같은 에러가 발생했다. 거기에 첫화면은 잘 렌더링 되지만 콘솔엔 failed to load resource까지 뜨는 아이러니..배포가 끝이 아니었던 것이다. 배포 후에 조금씩 원하는 기능을 추가하려 했지만 이슈 해결에만 이틀정도 소요된 것 같다. 그 중에 해당 에러가 가장 눈에 띄고 거슬려서 구글링을 시작했다. 그래도 구글링 실력이 좀 늘었는지 완벽한 해결방법은 아닌 것 같지만 간단하게 해결이 가능했다. 내 프로젝트같은 경우엔 처음 페이지에서 로그인을 하면 로그인이 유지가 되는데 여기서 새로고침 시 문제가 발생하는 것 같았다. 아마 새로고침을 하면 로그인 정보를 못불러오는 것 같은데..이게 CSR 문제인건지, R.. 2021. 7. 9.
[React.js] 컴포넌트 저장 기능 구현하기(dom-to-image, FileSaver) 프로젝트를 진행하면서 컴포넌트를 이미지로 저장하는 기능을 추가하고 싶어서 관련 자료를 찾기 시작했다. 처음엔 html2canvas와 jspdf로 기능을 구현하려고 구글링을 하다 dom-to-image, FileSaver 라이브러리를 알게 되었고 이 조합 코드가 좀 더 직관적이고 사용법이 좋은 것 같아서 결정하게 되었다.(그리고 좀 더 기능 구현 목적에 알맞다.) dom-to-image와 FileSaver 설치 npm install dom-to-image npm install file-saver --save 또는 yarn add dom-to-image yarn add file-saver 기능 구현 각 컴포넌트에 다운로드 버튼이 있고 버튼을 클릭하면 해당 컴포넌트를 PNG 이미지로 저장하도록 구현한다. im.. 2021. 7. 7.
[React.js] 유튜브를 만들어 보자 리액트로 만든 BYTube 🧑🏻‍💻 👉 BYtube 사용한 기술들 🛠 React.js JavaScript HTML CSS Node.js Yarn PostCSS Postman Netlify BYTube 프로젝트는 💭 함수형 컴포넌트 사용 Hooks를 통해 렌더링 최적화, 동적인 페이지 구현 유튜브의 search, videos, channels API 사용 Postman을 통해 API 통신 테스트 및 fetch 코드 활용 API를 불러오는 통신(service)과 View 컴포넌트 분리 API Key를 숨기기 위해 .env 파일 사용 PostCSS로 CSS 스타일링 모듈화 링크 공유 시 지인을 안심 시키기 위한 썸네일 추가 검색 기능 PC 화면에 최적화 프로젝트를 진행하면서 배운 것들 💡 1. View 컴포넌.. 2021. 4. 30.
반응형