React.Fragment란?

DOM에 별도의 노드를 추가하지 않고 여러 자식 요소를 그룹화할 수 있습니다.

JSX 제한 사항

JSX 코드를 작성할 때 Root 요소가 존재하지 않고 나란히 존재하고 있다면 JSX 문법에 위반하는 행위가 됩니다.

아래의 코드와 같이 JSX는 ReactDOM 요소로 작성이 가능합니다. 한개의 Root 요소 안에는 여러개의 요소가 존재할 수 있지만 Root 요소는 여러개가 존재할 수 없다는 것입니다.

// JSX 문법에러
return (
    <h2>안녕하세요 여러분!!</h2>
    <p>만나게 되어 반갑습니다!</p>
);

// JSX 문법을 ReactDOM으로 변경한 코드
return (
	React.createElement('h2' {}, '안녕하세요 여러분!')
	React.createElement('p' {}, '만나게 되어 반갑습니다!')
);

JSX 제한 사항 해결 방안

이를 해결하기 위해서 <div>태그를 사용하는 경우 디자인 작업을 할 때 작업속도가 느려지기 때문에 대신 사용하는 것이 바로 Fragment 입니다. Fragment를 사용할 경우 아무것도 없는 요소라고 JSX문법은 판단을 하지만 Root 요소라고 판단을 하기도 합니다.

또한, div를 남발하여 사용할 경우 불필요한 div가 화면에 모두 렌더링 됩니다.

// <div>를 통한 JSX 문법 에러 해결
return (
    <div>
        <h2>안녕하세요 여러분!!</h2>
        <p>만나게 되어 반갑습니다!</p>
    </div>
);


// Fragment를 통한 JSX 문법 에러 해결
return (
    <React.Fragment>
        <h2>안녕하세요 여러분!!</h2>
        <p>만나게 되어 반갑습니다!</p>
    </React.Fragment>
);

// Fragment 단축 문법
return (
    <>
        <h2>안녕하세요 여러분!!</h2>
        <p>만나게 되어 반갑습니다!</p>
    </>
);

'Coding > React & React-native' 카테고리의 다른 글

[Redux]React-redux 사용하기  (0) 2022.10.25
[React] Portals  (0) 2022.07.16
[React] React 디버깅  (0) 2022.07.08
[Redux] Redux?  (0) 2022.07.01
[React] React 시작하기 (create-react-app)  (0) 2022.06.24

📌 어제 배운 내용을 바탕으로 실제 웹 접근성을 고려해보는 과제가 주어졌다. 하면서 이런점이 있으면 몸이 불편하신 분들에게 도움이 될 수 있고, 코드를 보고 '아! 어떤 내용이 담긴 코드이구나!' 라는 것을 알 수 있다는 것을 다시 한번 깨닫는 계기가 되었습니다.

📗 오늘 학습한 내용

alt 속성

  • 속성의 이미지를 보여줄 수 없을 때 해당 이미지를 대체할 텍스트를 명시한다.
  • 느린 네트워크 환경이나 src 속성의 오류, 시각 장애인용 스크린 리더 등을 사용할 때 대체 정보를 제공한다.

for 속성

  • for의 값과 id의 값이 같은 태그를 연결시켜준다.
<label for='name'> </label>
<input id='name'> </input>

크롬 플러그인 Screen Reader

  • 웹 페이지의 내용을 읽어주는 플러그인 (alt, label, aria 등을 읽어준다.)

📘 추가로 공부할 내용

[udemy] React 완벽 가이드 강의 보기 (매일 조금씩 이라도 꾸준히 듣기)

스터디 모집 프로젝트에 관해 틀을 조금 더 명확하게 기획해보기(토이프로젝트)

📝 중요한 내용

  • 웹 접근성을 지키면서 코드를 작성해야 한다. (법적으로 뭔가 있다했음)
  • 2013년 4월 11일부터 차별 금지법에 의해 웹 접근성 보장을 의무화하고 있다고 적혀있다.

'Daily > Today I Learned' 카테고리의 다른 글

22.07.15_TIL  (0) 2022.07.15
22.07.14_TIL  (0) 2022.07.14
22.07.11_TIL  (2) 2022.07.11
22.07.08_TIL  (0) 2022.07.08
22.07.07_TIL  (0) 2022.07.07

📌 이제 first프로젝트까지 남은기간은 약 5주이다. 5주동안 정말 내가 프로젝트를 완성할 수 있는지 할 수 있다면 어떤 기능을 구현할 수 있는지 직접 겪어보는 시간이 필요할 것 같다. 기획 → 와이어프레임 → 구현까지의 과정을 한번 해봐야 할 듯 하다. 기능으로는 React Router 설정 및 회원가입, 로그인 구현은 가장 기본적이기 때문에 CRUD프로젝트와는 다르게 다시 해봐야겠다.

📗 오늘 학습한 내용

웹 접근성

  • 누구든지 화면을 볼 수 없거나, 소리를 들을 수 없거나, 마우스 없이 키보드밖에 사용할 수 없는 등 정보 접근에 제한을 받을 수 있는 상황을 해결하고자 노력하는 것이 웹 접근성(Web Accessibility)이다.
  • 웹 접근성을 갖추면 어떤 상황에서도 항상 동등한 수준의 정보를 제공받도록 보장받을 수 있다.

웹 접근성을 갖추면 얻을 수 있는 효과

  1. 사용자층 확대
  2. 다양한 환경 지원
  3. 사회적 이미지 향상

한국형 웹 콘텐츠 접근성 지침

  • 인식의 용이성(Perceivable): 모든 컨텐츠는 사용자가 인식할 수 있어야 한다.
    1. 적절한 대체 텍스트 (alt 속성 사용)
    2. 자막 제공 (track 요소 사용)
    3. 색에 무관한 콘텐츠 인식 (테두리 및 레이블 달기)
    4. 명확한 지시사항 제공
    5. 텍스트 콘텐츠 명도 대비
    6. 자동 재생 금지
    7. 콘텐츠 간 구분
  • 운용의 용이성(Operable): 사용자 인터페이스 구성요소는 조작 가능하고 내비게이션 할 수 있어야 한다.
    1. 키보드 사용 보장
    2. 초점 이동
    3. 조작 가능
    4. 응답 시간 조절
    5. 정지 기능 제공
    6. 깜빡임과 번쩍임 사용 제한
    7. 반복 영역 건너뛰기
    8. 제목 제공
    9. 적절한 링크 텍스트
  • 이해의 용이성(Understandable): 콘텐츠는 이해할 수 있어야 한다.
    1. 기본 언어 표시(lang 속성 사용)
    2. 사용자 요구에 따른 실행
    3. 콘텐츠 선형 구조
    4. 표의 구성
    5. 레이블 제공
    6. 오류 정정
  • 견고성(Robust): 웹 콘텐츠는 미래의 기술로도 접근할 수 있도록 견고하게 만들어야 한다.
    1. 마크업 오류 방지
    2. 웹 애플리케이션 접근성 준수

WAI (Web Accessibility Initiative)

  • 웹 표준을 정하는 W3C에서 웹 접근성을 담당하는 기관

ARIA (Accessible Rich Internet Applications)

  • 장애가 있는 사람들이 웹 콘턴츠와 웹 응용 프로그램에 더 쉽게 액세스할 수 있도록 하는 기술

WAI-ARIA의 필요성

  • 시맨틱 요소만으로 의미를 충분히 부여할 수 없는 상황에서 사용한다.
  • SPA처럼 AJAX를 사용하는 상황에서 사용한다.

WAI-ARIA 사용법

  • 역할(role): HTML 요소의 역할을 정의하는 속성
  • 상태(state): 요소의 현재 상태를 나타내는 속성
  • 속성(property): 요소의 특징을 정의하는 속성(attribute)

📘 추가로 공부할 내용

[udemy] React 완벽 가이드 강의 보기 (매일 조금씩 이라도 꾸준히 듣기)

JavaScript 이분탐색 코드 분석 및 이론정리

📝 중요한 내용

  • 웹 접근성이란?
  • 웹 접근성을 통해 얻을 수 있는 효과
  • WAI-ARIA

'Daily > Today I Learned' 카테고리의 다른 글

22.07.14_TIL  (0) 2022.07.14
22.07.12_TIL  (0) 2022.07.12
22.07.08_TIL  (0) 2022.07.08
22.07.07_TIL  (0) 2022.07.07
22.07.06_TIL  (0) 2022.07.06

완전 탐색?

  • 컴퓨터의 빠른 계산 능력을 이용하여 가능한 경우의 수를 일일이 나열하면서 답을 찾는 방법을 말합니다.
  • 효율성 관점에서는 최악의 방법입니다.
  • '무식하게 답을 찾는다'라고 하여 Brute-Force(브루트 포스)라고도 불립니다.

완전 탐색 기법

  • 완전 탐색 기법을 이용하기 위해서는 여러 알고리즘 기법이 사용된다.
  • 완전 탐색 기법만을 가지고는 알고리즘 문제를 풀기에는 적합하지 않습니다.

주로 사용되는 알고리즘 기법

  1. 단순 Brute-Force
    • 알고리즘 기법을 사용하지 않고 단순히 반복문을 통해 답을 구하는 방법입니다.
  2. 비트 마스크(Bitmask)
    • 2진수를 이용하는 컴퓨터의 연산을 이용하는 방식입니다.
  3. 재귀 함수
    • 재귀 함수를 통해서 문제를 만족하는 경우들을 만들어가는 방식입니다.
    • 무한루프에 빠질 수 있음을 주의해서 작성해야 합니다.
  4. 순열(Permutation)
    • 완전 탐색의 대표적인 유형으로 서로 다른 N개를 나열하는 순열을 구하는 방식입니다.
  5. BFS / DFS
    • 완전 탐색과 BFS/DFS 문제가 코딩 테스트에 많이 나오고 있으며, 대표적인 문제로 길 찾기 문제가 있습니다.

리액트 에러 발생

React server를 실행하고 있을 때, 콘솔에서 에러 코드가 나오지만 웹페이지에서도 콘솔창과 동일한 에러 코드가 나옵니다.

에러코드와 함께 해결할 수 있는 방향을 제시해줍니다. 해당 에러 코드 조각과 해결 방안을 통해 프로그램을 디버깅* 할 수 있습니다.

이렇기 때문에 항상 콘솔에 나오는 에러 코드를 확인해야 합니다.

자주 발생하는 에러

JSX 요소 규칙

  • JSX로 작성한 요소를 하나의 루트 요소로 감싸주어야 합니다.
  • 이때, 쓸모없는
  • 태그로 감싸줄 시 디자인 요소에 방해가 될 수 있습니다.
  • 이것은 React.fragment(<></>)를 사용하여 하나의 루트 요소로 감싸주어 에러를 해결할 수 있습니다.

함수명 오타

  • State를 관리하는 함수를 자주 사용해야 하는 만큼 함수명이 많아짐에 따라 오타를 잘 체크해야 합니다.

코드의 흐름 및 경고 분석

  • 컴파일 오류를 일으키지 않아 에러 코드를 볼 수 없는 경우가 있습니다. 이러한 경우 코드 로직을 하나씩 찾아가며 체크를 해야 합니다.
  • 코드 로직을 하나하나 찾아가면 시간이 많이 걸리기 때문에 다른 방법으로 개발자 도구를 켜서 Console 창을 확인하면 어떠한 경고가 나오고 있는지 어떤 파일의 몇 번째 줄에 문제가 있는지 알 수 있습니다.

중단점(breakpoint) 작업하기

  • 개발자 도구의 Source 탭에 가면 소스파일이 있는 경로를 확인할 수 있습니다.
  • 확인하고 싶은 파일을 클릭하여 파일을 실행시키고 코드를 선택한 부분에서 작업을 정지할 수 있으며, 함수의 흐름에 따라 코드를 찾아가며 확인할 수 있습니다.
  • Source탭에서 나온 코드를 수정하여 에러의 유무를 확인할 수도 있습니다.

React DevTools 사용하기

  • 크롬에서 사용할 수 있는 플러그인 중 React Developer Tools을 사용하면 컴포넌트의 트리 구조를 볼 수 있습니다.
  • 해당 컴포넌트를 클릭하면 props로 넘어오는 값과 각종 요소를 확인할 수 있습니다.
  • 특히 가장 좋은 부분은 state의 값을 확인할 수 있다는 것입니다.

*디버깅?

프로그램 개발 단계 중에서 발생하는 오류나 버그를 찾아내고 그 원인을 밝히고 수정하는 작업입니다.

참고자료

  • udemy: 【한글자막】 React 완벽 가이드 with Redux, Next.js, TypeScript

'Coding > React & React-native' 카테고리의 다른 글

[React] Portals  (0) 2022.07.16
[React] Fragment  (0) 2022.07.12
[Redux] Redux?  (0) 2022.07.01
[React] React 시작하기 (create-react-app)  (0) 2022.06.24
[React] React?  (0) 2022.06.09

📌 웹 표준과 SEO는 개념을 알고 있긴 하지만 살짝 알고 있을 뿐이고 기술 면접에서 자주 나오는 부분이니 열심히 암기해야 하는 학습이다.!

 

📗 오늘 학습한 내용

인터넷 

  • 전 세계적으로 연결되어 있는 컴퓨터 네트워크 통신망

  • 문서, 이미지, 영상 등 다양한 정보를 여러 사람들과 공유할 수 있는 공간

웹 표준

  • W3C(World Wide Web Consortium)에서 권고하는 '웹에서 표준적으로 사용되는 기술이나 규칙'
  • 사용자가 어떤한 운영체제나 브라우저를 사용하더라도 웹페이지가 동일하게 보이고 정상적으로 작동할 수 있도록 하는 웹 페이지 제작기법
  • 웹 표준에 맞게 웹 페이지를 작성하면 어떤 브라우저를 사용하든 동일한 결과물을 얻을 수 있다.

웹 표준의 장점

  • 유지 보수의 용이성
  • 웹 호환성 확보
  • 검색 효율성 증대
  • 웹 접근성 향상

Semantic HTML

  • semantic: 의미가 있는
  • HTML: 화면의 구조를 만드는 마크업 언어

HTML을 사용하는 두 가지 방식

  • <div>와 <span>으로 화면 구성
    • 두 가지의 요소만 알면 충분히 화면의 구조를 만들 수 있지만, 어떤 내용이 들어갈지는 명시되지 않아서 경험을 토대로 태그가 어떤 역할을 하는지 추측해야하는 어려움이 있다.
  • 시맨틱 요소로 화면 구성
    • <header>, <nav>, <main>, 등 여러가지 태그를 사용하여 어떤 역할을 하는 하는지 확실하게 알 수 있다.

시맨틱 HTML의 필요성

  1. 개발자간 소통
  2. 검색 효율성
  3. 웹 접근성

자주 틀리는 태그

  • 인라인 요소 안에 블록 요소 넣기
    • 인라인 요소(<span>)
      • 컨텐츠가 차지하는 만큼 영역 지정
      • 항상 블록 요소 안에 들어가야 한다.
    • 블록 요소(<div>)
      • 가로로 넓게 화면 영역을 차지한다.
  • <b>, <i> 요소 사용
    • 웹 표준을 준수하기 위해서는 이 요소들을 사용하지 않는 것이 좋다.
    • 표현을 기준으로 이름이 지어진 요소이기 때문이다.
    • 대신 <strong>, <em>을 사용하는 것이 좋다.
  • <hgroup> 난발하여 사용
    • 글자에 스타일 속성을 적용하기 위한 목적으로 사용하면 안된다.
  • <br/> 연속 사용
    • 이어지는 텍스트 흐름에 줄 바꿈을 하기 위해 사용
    • 요소 사이에 간격이 필요한 경우 별도의 단락으로 구별하거나, CSS 속성에 여백을 주는 것이 좋다.
  • 인라인 스타일링 사용
    • HTML 요소 안에서 스타일링을 하는 방법보다 CSS 코드를 분리하여 작성하는 것이 좋다.
    • HTML 안에 작성할 경우 분리한 영역을 다시 합치는 것이 되기 때문이다.

크로스 브라우징(Cross Browsing)

  • 웹 사이트에 접근하느 브라우저의 종류에 상관 없이 동등한 화면과 기능을 제공할 수 있도록 만드는 작업
  • 모든 브라우저에서 완전히 똑같이 화면이 보이도록 하는 것은 아닌, 모든 브라우저에서 동등한 수준의 정보와 기능을 제공하는 것이다.

크로스 브라우징 워크 플로우

  1. 초기 기획
    • 어떤 웹 사이트를 만들 것인지 정확하게 결정
    • 어떤 컨텐츠와 기능, 디자인은 어떻게 할지 등의 사항을 결정한다.
  2. 개발
    1. 코드를 작성할 때 사용하는 코드가 각 브라우저에서의 호환성이 어떤지 파악하고 사용해야 한다.
    2. https://caniuse.com/
  3. 테스트 / 발견
    1. 안정적인 테스크톱 브라우저에서 테스트를 진행한다.
    2. 휴대폰 및 태플릿 브라우저에서 테스트를 진행한다.
    3. 초기 기획 단계에서 목표했던 브라우저가 있다면 해당 브라우저에서 테스트를 진행한다.
    4. Window, Linux, Mac 등 다양한 운영 체제에서도 테스트를 진행한다.
  4. 수정 / 반복
    • 버그의 수정을 하기 위함

SEO (Search Engine Optimization, 검색 엔진 최적화)

  • SEO를 통해 검색 엔진에서 웹 페이지를 보다 더 상위에 노출 될 수 있게끔 할 수 있다.
  • On-Page SEO
    • 페이지 내부에서 진행할 수 있는 SEO, 제목과 컨텐츠, 핵심 키워드의 배치, 효율적인 HTML 요소 사용법 등을 이용하는 방법
  • Off-Page SEO
    • 웹 사이트 외부에서 이루어지는 SEO, 소셜 미디어 홍보, 백링크 등을 이용하는 방법

On-Page 통제 요소

  1. <title> 요소
    • 검색 결과창에 제목에 해당하는 요소이며, <head>의 자식 요소이다.
    • 어떤 내용을 작성하는가에 따라서 검색 후 유입까지 유도할 수 있다. (제목 길이를 짧게)
    • 핵심 키워드가 포함되면 상위에 노출될 확률이 높아진다. (핵심 키워드는 한번만 포함)
  2. <meta> 요소
    • 메타 데이터를 담는 요소이며, <head>의 자식요소이다.
    • 웹 사이트에서 다루고 있는 데이터가 무엇인지에 대한 데이터
    • 검색 결과창에서 제목 밑에 따라오는 설명글
  3. <hgroup> 요소
    • 제목을 표시하는 용도
  4. 컨텐츠
    • 개성있는 브랜딩
    • 복사 + 붙여넣기 금지
    • 간결한 제목과 설명글
    • 최대한 글자로 작성하기

 

📘 추가로 공부할 내용

[udemy] React 완벽 가이드 강의 보기 (매일 조금씩 이라도 꾸준히 듣기)

[python] leetcode 문제풀이

[React] 혼자 제작한 CRUD 프로젝트 리팩토링

 

📝 중요한 내용

  • 웹 표준이란?
  • 웹 표준을 지켜야 하는 이유
  • 웹 표준을 사용했을 경우의 장점
  • 자주 틀리는 태그(시맨틱 태그를 활용하는 방법)
  • 크로스 브라우징
  • SEO, 검색 엔진 최적화

'Daily > Today I Learned' 카테고리의 다른 글

22.07.12_TIL  (0) 2022.07.12
22.07.11_TIL  (2) 2022.07.11
22.07.07_TIL  (0) 2022.07.07
22.07.06_TIL  (0) 2022.07.06
22.07.05_TIL  (0) 2022.07.05

+ Recent posts