π Front-End/React.js
β CSR λΌμ΄λΈλ¬λ¦¬ μ€μΉ https://reactrouter.com/ μ μ Read the Docs ν΄λ¦ VScode ν°λ―Έλμμ λͺ
λ Ήμ΄ μ
λ ₯νκ³ μ€μΉ μ€μΉκ° μ μμ μΌλ‘ λ¬λμ§ νμΈνκΈ° μν΄ package.json νμΌμμ νμΈνκΈ° npm start λ‘ νλ‘μ νΈ μμ β νλ‘μ νΈμμ μ§μ Page Routing μλνκΈ° νμ¬ ν΄λ ꡬ쑰 β λΈλΌμ°μ URL κ³Ό React App μ μ°κ²° App.js import './App.css'; import { BrowserRouter } from 'react-router-dom'; // λΈλΌμ°μ URL κ³Ό React App μ μ°κ²° νλ κΈ°λ₯ function App() { return ( // μ΅μμ νκ·Έλ‘ κ°μΈκΈ° App.js ); } export default A..
π Front-End/React.js
Routing β κ²½λ‘λ₯Ό μ ν΄μ£Όλ νμ κ·Έ μ체 β λΈλΌμ°μ μ μΉ μλ² μΈν°λ·μ μ¬μ©ν΄μ μΉ μ¬μ΄νΈμ μ μ νλ€λ κ²μ λΈλΌμ°μ λ₯Ό ν΅ν΄μ μΉ μλ²μκ² κ²½λ‘μ μμ²μ μ λ¬νκ³ , μΉ λ¬Έμλ₯Ό λ°μ보λ μμ κ°μ κ³Όμ μ
λλ€. /home μ΄λΌλ κ²½λ‘λ₯Ό μμ²μ 보λ΄κ² λλ©΄, /home μ ν΄λΉνλ μΉ λ¬ΈμμΈ Home.html μ μΉ μλ²κ° λΈλΌμ°μ μκ² μ λ¬νκ² λ©λλ€. β Page Routing μ΄λ ν μμ²μ λ°λΌμ μ΄λ€ νμ΄μ§λ₯Ό λλ €μ€μ§ κ²°μ νλ κ³Όμ μ μΌμ»«λ λ§ μ
λλ€. νμ¬ REQUEST κ° /home μ΄λΌλ κ²½λ‘λ‘ μμ²μ΄ λ€μ΄μμ΅λλ€. μΉ μλ²λ κ²½λ‘μ μλ§λ νμ΄μ§μΈ Home.html λ₯Ό μ λ³μ ν΄μ λλ €μ£Όκ² λ©λλ€. μ΄λ κ² μμ²μ λͺ
μλμ΄ μλ κ²½λ‘μ λ°λΌμ μλ§μ νμ΄μ§λ₯Ό μ ννκ² νλ κ³Όμ μ체λ₯Ό ..
π Front-End/React.js
μ»΄ν¬λνΈ νΈλ¦¬μ λ°μ΄ν° κ³΅κΈ β κ³μΈ΅ ꡬ쑰 μμ μ¬μ§μ νμ¬ λ§λ€μ΄λ³Έ νλ‘μ νΈμ κ³μΈ΅ ꡬ쑰 λ 3 κ°μ props μ λ°μ§λ§, κ·Έ μ€μ λΉ¨κ°μμΌλ‘ λ κ°λ μμ μ΄ μ¬μ©νμ§ μλ props μ
λλ€. μ λ¬λ§ νλ μ»΄ν¬λνΈκ° μ€κ°μ λ§μ΄ μκΈ°κ² λλ κ²½μ°μλ props μ μ΄λ¦λ λ°κΎΈκΈ°κ° μ΄λ €μμ§κ³ , μ½λ μμ±κ³Ό μμ μ μ
μν₯μ λ―ΈμΉκ² λ©λλ€. μ΄λ¬ν μν©μ λ§μΉ props κ° λ릴μ²λΌ λ
μ νκ³ λ€μ΄κ°λ€κ³ props λλ¦΄λ§ μ΄λΌκ³ λΆλ¦
λλ€. λΆλͺ¨μκ²μ μμμΌλ‘λ§ λ°μ΄ν°λ₯Ό μ λ¬νλ λ¨λ°©ν₯ λ°μ΄ν° νλ¦μ μ§ν€λ React μ λ¬Έμ λΌκ³ λ μκ° ν μ μμ΅λλ€. β Context μ κ°λ
λͺ¨λ λ°μ΄ν°λ₯Ό κ°μ§κ³ μλ μ»΄ν¬λνΈκ° Provider λΌκ³ 곡κΈμ μν μ νλ μμ μ»΄ν¬λνΈμκ² μμ μ΄ κ°μ§κ³ μλ λͺ¨λ λ°μ΄ν°..
π Front-End/React.js
μ»΄ν¬λνΈμμ μνλ³ν λ‘μ§μ λΆλ¦¬ νμμ± β useState λ₯Ό μ΄μ©νλ©΄ μμ μ²λΌ μν λ³ν ν¨μλ₯Ό κ°κ° Counter μ»΄ν¬λνΈ μμ μμ±μ ν΄μΌ νμ΅λλ€. μ΄μ κ°μ κ²½μ° μ»΄ν¬λνΈμ μ½λκ° κΈΈμ΄μ§κ³ λ³΅μ‘ ν μ λ°μ μμ΅λλ€. useReducer μ μ¬μ©νλ©΄ β μΌμͺ½μ 보μ΄λ reducer λΌλ μν λ³ν ν¨μλ₯Ό μ»΄ν¬λνΈ λ°μΌλ‘ λΆλ¦¬λ₯Ό νμ¬ λ€μν μνλ³ν λ‘μ§μ μ»΄ν¬λνΈ μΈλΆλ‘ λΆλ¦¬λ₯Ό ν΄μ μ½κ² μ²λ¦¬ ν μ μκ² λ°κΏ μ μμ΅λλ€. useReducer λ useState λ₯Ό λ체 ν μ μλ κΈ°λ₯ μ
λλ€. β λμ - 1 const Counter = () => { const [count, dispatch] = useReducer(reducer, 1); //const [ state, μνλ₯Ό λ³νμν€λ..
π Front-End/React.js
λ¬Έμ μ β μ μ λ§λ μΌκΈ° νλ‘μ νΈμμ μΌκΈ°λ₯Ό μμ νλ©΄ μΌκΈ°λ₯Ό μμ±νλ Editor κ° λ λλ§μ΄ λ©λλ€. ν
λ리λ₯Ό μ보면 κΉλΉ‘ μ
λλ€. μΌκΈ°λ₯Ό μμ νλ κ³Όμ μμ μΌκΈ° Editor κ° λ λλ§μ΄ λ μ΄μ λ μ ν μμ΅λλ€. κ·Έλ¬λ―λ‘ Editor λ₯Ό μ΅μ ν νκ² μ΅λλ€. μ»΄ν¬λνΈκ° λ λλ§μ΄ μΌμ΄λλ 쑰건μ λ³ΈμΈμ΄ κ°μ§κ³ μλ state μ λ³νκ° μκΈ°κ±°λ, λΆλͺ¨ μ»΄ν¬λνΈκ° 리λ λλ§μ΄ μΌμ΄λκ±°λ, μμ μ΄ λ°μ prop μ΄ λ³κ²½λκ² λλ κ²½μ° λ¦¬λ λλ§μ΄ μΌμ΄λ©λλ€. β DiaryEditor.js const DiaryEditor = ({ onCreate }) => { export default React.memo(DiaryEditor); // React.memo μ¬μ© νμ¬ DiaryEditor λ onCreate ν..
π Front-End/React.js
μ»΄ν¬λνΈ μ¬μ¬μ© ν¨μν μ»΄ν¬λνΈμκ² μ
λ°μ΄νΈ 쑰건μ κ±ΈκΈ° β μ»΄ν¬λνΈ νΈλ¦¬ App μ»΄ν¬λνΈλ κ°κ° count μ text λ κ°μ state λ₯Ό κ°μ§λλ€. counst state λ CountView μκ² , text state λ TextView μ»΄ν¬λνΈ μκ² prop μΌλ‘ κ°κ° 보λ΄μ£Όκ³ μμ΅λλ€. μ°μΈ‘μ νμλ μμλλ‘ μ½λλ₯Ό μννλ©΄μ μ΄λ»κ² μ
λ°μ΄νΈ λλμ§ λ³΄κ² μ΅λλ€. β μμ setCount(10) μ΄ μ€νμ΄ λλ©΄μ App μ»΄ν¬λνΈμ count state μ κ°μ λ³ν μν¬ μμ μ
λλ€. κ·Έλ¬λ©΄ App μ»΄ν¬λνΈμ count state μ κ°μ΄ λ°λκ² λκ³ , state κ° μ
λ°μ΄νΈ λμκΈ° λλ¬Έμ ν΄λΉ state λ₯Ό κ°μ§ App μ»΄ν¬λνΈλ 리λ λλ§μ΄ λκ² λ©λλ€. κ·Έλ κ²λλ©΄ prop μΈ CountVi..
π Front-End/React.js
μ°μ° κ²°κ³Ό μ¬μ¬μ© νλ λ°©λ² β μ μ μ΄λ―Έ κ³μ° ν΄ λ³Έ μ°μ° κ²°κ³Όλ₯Ό κΈ°μ΅ νκ³ μλ€κ°, λκ°μ κ³μ°μ μν€λ©΄ λ€μ κ³μ°νμ§ μκ³ λ΅λ§ λ°ννλ λ°©λ² Ex) μν μνμ λ³Ό λ, μ΄λ―Έ νμ΄λ³Έ λ¬Έμ λ λ€μ νμ΄λ³΄μ§ μμλ μ λ΅μ μκ³ μλ κ² emotion λ³ μΌκΈ°μ κ°μμ λΉμ¨ β App.js const getDiaryAnalysis = () => { console.log('μΌκΈ° λΆμ μμ') const goodCount = data.filter((it)=>it.emotion >= 3).length; const badCount = data.length - goodCount; const goodRatio = (goodCount / data.length) * 100; return {goodCount, badC..
π Front-End/React.js
https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=ko Chrome μ νμ₯ λꡬ React κ°λ° μ νΈμμ±μ μ€λλ€. β React app μ κ°λ° νκ³ μμΌλ©΄ μμ λͺ¨μ μ²λΌ λ°λλλ€. β μ°Έκ³ νλ©΄ μ’μ μ¬μ΄νΈ https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=pjt3591oo&logNo=221907792621