Intro
μ€λμ νλ‘ νΈμλμμ μ€μνκ³ μλ λ°μν μΉμ λν΄ νμ΅νλ€.
μ€λ νμ΅ν λ΄μ©
λ°μν μΉ μκ°
λ°μν μΉμ νλμ μΉ μ¬μ΄νΈλ‘ PC, λͺ¨λ°μΌ, ν λΈλ¦Ώ λ± κΈ°κΈ° μ’ λ₯μ λ°λΌ μ΅μ μ μ¬μ©μ κ²½νμ μ 곡νλ μΉ λμμΈ μ κ·Ό λ°©μμ΄λ€.
곡κ°μ νκ³ κ·Ήλ³΅νκΈ°
- μ€ν¬λ‘€ νμ₯ (μμ§, μν μ€ν¬λ‘€)
- λ§μ μμ μ 보λ₯Ό 보μ¬μ£ΌκΈ° μν λ°©μλ€ (μμ½λμΈ λ±)
μμ κ°μ΄, λλ°μ΄μ€μ λμνκΈ° μν μ¬λ¬ λ°©μλ€μ΄ μ μλκ³ μλ€.
λ°μν μΉ μ’ λ₯
- Mostly Fluid Layout Pattern (μ λν ν¨ν΄: νλ©΄ ν¬κΈ°μ λ°λΌ 컨ν μΈ μ λ°°μΉκ° μλμΌλ‘ μ‘°μ )
- Layout Shifter Layout Pattern (νλ©΄ ν¬κΈ°μ λ°λΌ λ μ΄μμμ λ³νμν΄)
λ°μν μΉμ λ°μ λ νλ‘ νΈμλμ λ°μ
: λ°μν μΉμ ꡬννκΈ° μν΄ κΈ°λ³Έμ μΈ viewport, λ―Έλμ΄ μΏΌλ¦¬ λ± CSS λ§μΌλ‘ μΆ©λΆν ꡬνν μ μμΌλ λ€μν νκ²½μ λλ°μ΄μ€, μ¬μ©μ νκ²½μ λ°λΌ νλ©΄μ 보μ¬μ£ΌκΈ° μν΄ React.js λ±μ νλ‘ νΈμλ κΈ°μ μ νμ©νλ©΄ λ λ€μ΄λλ―Ήνκ² κ΅¬νν μ μλ€.
λΉλμ€ μλν°μ λ°μν μ μ©νκΈ°
λλ°μ΄μ€μ κΈ°μ’ μ²΄ν¬νκΈ°!
- λλ°μ΄μ€
import React, { useState, useLayoutEffect } from 'react';
const useDeviceType = () => {
const [deviceType, setDeviceType] = useState('pc');
let screenWidth = window.innerWidth;
const updateDeviceType = () => {
screenWidth = window.innerWidth;
if (screenWidth <= 768) setDeviceType('mobile');
if (screenWidth > 768 && screenWidth <= 1024) setDeviceType('tablet');
if (screenWidth > 1024) setDeviceType('pc');
};
useLayoutEffect(() => {
updateDeviceType();
window.addEventListener('resize', updateDeviceType);
return () => {
window.removeEventListener('resize', updateDeviceType);
};
}, [deviceType]);
return deviceType;
};
export default useDeviceType;
β οΈ useLayoutEffectλ λ§μ΄ μ¬μ©νλ©΄ μ±λ₯μ΄ λ¨μ΄μ§κΈ° λλ¬Έμ ν λ²λ§ μ¬μ©νλλ‘ νλ€.
- κΈ°μ’
import React from 'react';
const useUserAgent = () => {
let userAgent = navigator.userAgent;
return userAgent;
};
export default useUserAgent;
μΉ API μ€ νλμΈ Navigatorλ νμ¬ λΈλΌμ°μ μ μνμ μ 보λ₯Ό μλ €μ€λ€.
userAgentλ νμ¬ λΈλΌμ°μ μ μ΄λ¦, λ²μ λ° μ΄μ 체μ μ λν μ 보λ₯Ό κ°μ§κ³ μλ€.
λ§λ¬΄λ¦¬
μ€λ§νΈν°μ΄ λ°λ¬νκ³ λλΆλΆμ μ¬μ©μλ€μ΄ PCλ³΄λ€ λͺ¨λ°μΌ νκ²½μμ μΉμ μ μνλ κ²½ν₯μ΄ λμμ§λ©΄μ, λ°μνμ΄λ κΈ°μ μ΄ μκΈ°κ³ νλ‘ νΈμλ κΈ°μ μ΄ λ°μ νλ κ³κΈ°κ° λ κ² κ°λ€. μ΄λ¬ν κΈ°μ μ΄ μμΌλ‘λ λ λ°μ ν κ²μ΄λΌ μκ°νκ³ νλ‘ νΈμλ μ§μ μ κ°λ κ²μ μλΆμ¬μ΄ μκΈ°λ κ² κ°λ€.