Skip to content

Instantly share code, notes, and snippets.

View ninanung's full-sized avatar
๐ŸŽธ
Punk

Seungje Jun ninanung

๐ŸŽธ
Punk
  • Backpackr idus
  • Seoul, South Korea,
View GitHub Profile
@ninanung
ninanung / landing_content.php
Created March 25, 2020 08:40
medium sample code
<div id="app">test-component</div>
<script>
(function() {
// vue init
landing.createApp('#app', {
test: 'test'
});
}());
</script>
@ninanung
ninanung / App.vue
Created March 25, 2020 07:17
medium sample code
<template>
<div>
Hello World!!!
</div>
</template>
@ninanung
ninanung / package.json
Created March 25, 2020 06:10
medium sample code
{
"name": "vue-in-the-php",
"version": "1.0.0",
"description": "pack of code for Medium story example code",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"vue": "cross-env NODE_ENV=development webpack --config webpack.config.landing --watch",
"vue:build": "cross-env NODE_ENV=production webpack --config webpack.config.landing"
},
@ninanung
ninanung / webpack.config.js
Last active March 25, 2020 06:42
medium sample code
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const path = require('path');
// ๊ฐœ๋ฐœํ™˜๊ฒฝ์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋‹จํ•˜์—ฌ ๋งž์œผ๋ฉด true๋ฅผ, ์•„๋‹ˆ๋ฉด false๋ฅผ ์ €์žฅํ•œ๋‹ค
const isDevelopment = process.env.NODE_ENV !== 'production';
module.exports = {
// ๊ฐœ๋ฐœ๋ชจ๋“œ๋ฅผ ์„ค์ •
mode: process.env.NODE_ENV,
// ๋นŒ๋“œ์‹œ ์ค‘์‹ฌ์ด ๋  ํŒŒ์ผ์„ ์„ค์ •ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” Vueํ”„๋กœ์ ํŠธ์˜ rootํŒŒ์ผ์ธ index.jsํŒŒ์ผ์„ ์„ค์ •ํ–ˆ๋‹ค.
@ninanung
ninanung / useful.md
Last active January 30, 2020 10:23
์œ ์šฉํ•œ ๊ฒƒ๋“ค

webpack.config.js ์—์„œ resolve alias์‚ฌ์šฉ

resolve: {
  extensions: [ '.js', '.vue', '.json' ],
  alias: {
    '@': path.resolve( __dirname, '..' )
  }
}

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด @๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ import ํ•  ์ˆ˜ ์žˆ๋‹ค.

@ninanung
ninanung / ReactHooks5.md
Created August 29, 2019 08:40
๋•Œ๋Šฆ์€ React Hooks ์‹œ๋ฆฌ์ฆˆ 5ํƒ„ - useReducer/Custom Hooks

์ด ๊ธ€์˜ ์ฝ”๋“œ๋Š” ์ €์ž์˜ Github์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์€ Redux๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•ด ๋ณด์•˜๊ฑฐ๋‚˜ ์ตœ์†Œํ•œ ๊ด€๋ จ ์ง€์‹์ด ์žˆ๋‹ค๋Š” ์ „์ œํ•˜์— ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋ชจ๋ฅธ๋‹ค๋ฉด ๊ด€๋ จ ๊ณต๋ถ€๋ฅผ ๋จผ์ € ํ•ด์ฃผ์„ธ์š”.

๋•Œ๋Šฆ์€ React Hooks ์‹œ๋ฆฌ์ฆˆ 5ํƒ„ - useReducer/Custom Hooks

์ €๋ฒˆ๊ธ€์—์„œ React Hooks๋ฅผ ์ด์šฉํ•œ router๋ฅผ ์„ค๋ช…ํ•ด ๋ณด๊ฒ ๋‹ค๊ณ  ํ–ˆ์œผ๋‚˜ ๊ณ„ํš์„ ์กฐ๊ธˆ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ฌด๋ž˜๋„ ์ด ๋ถ€๋ถ„์€ ์„ค๋ช…ํ•˜๊ณ  ๋„˜์–ด๊ฐ€์•ผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ Hooks๋“ค์ด ๋™์ž‘ํ•˜๋Š”์ง€๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ์šฐ์„ ์€ ๋ฏธ๋ค„๋’€๋˜ useReducer๋ฅผ ์„ค๋ช…ํ•ด๋ณด์ฃ .

useReducer

Redux, Reducer์— ๋Œ€ํ•œ ๊ฐœ๋…์€ React์˜ ๋‹ค์–‘ํ•œ ์ปดํฌ๋„ŒํŠธ๋“ค์—์„œ ํ†ตํ•ฉ์ ์œผ๋กœ state๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ง์ด ๋ฌด์—‡์ด๋ƒ๋ฉด, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด๋ฅผ ๊ด€ํ†ตํ•˜๋Š” ์ƒํƒœ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ๋“ค์–ด ์กŒ๋‹ค๋Š” ๋ง์ž…๋‹ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ์ƒํ•˜์— ๋”ฐ๋ผ ๊ฐ’์„ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฒƒ์— ํ•œ๊ณ„๊ฐ€ ์žˆ๊ณ , ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„์„ ํ•œ๋‹ค๊ณ  ํ•ด๋„ ๊ด€๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. useReducer๋Š” ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ์˜ Redux๋ฅผ ์–ด๋Š์ •๋„ ๋Œ€์‹ ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์–ด์ฐจํ”ผ ์„ค๋ช…์„ ์ค„์ค„์ด ํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค๋Š” ์ง์ ‘ ๋ณด๋Š”๊ฒŒ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๋ฅผ ์šฐ์„  ๋ณด๋„๋ก ํ•˜์ฃ .

@ninanung
ninanung / ReactHooks4.md
Last active May 6, 2022 15:30
๋•Œ๋Šฆ์€ React Hooks ์‹œ๋ฆฌ์ฆˆ 4ํƒ„ - useCallback/useRef

์ด ๊ธ€์˜ ์ฝ”๋“œ๋Š” ์ €์ž์˜ Github์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋•Œ๋Šฆ์€ React Hooks ์‹œ๋ฆฌ์ฆˆ 4ํƒ„ - useCallback/useRef

useCallback

React์—์„œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‹ค์‹œ ๋ Œ๋”๋ง ๋  ๋•Œ์—๋Š” ์ปดํฌ๋„ŒํŠธ ์•ˆ์— ์„ ์–ธ๋œ ํ•จ์ˆ˜๋“ค์„ ์ƒˆ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๊ณ„์†ํ•ด์„œ ๋ Œ๋”๋ง ๋˜๋ฉด ํ•จ์ˆ˜๋„ ๊ณ„์†ํ•ด์„œ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ๋‹ค๋Š” ์–˜๊ธฐ์ž…๋‹ˆ๋‹ค. ๋”ฑ ๋“ค์–ด๋ด๋„ ๋น„ํšจ์œจ์˜ ๋ƒ„์ƒˆ๊ฐ€ ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์ด๋Ÿฐ ๋น„ํšจ์œจ์ ์ธ ์ž‘ํƒœ๋ฅผ ReactํŒ€์ด ๊ทธ๋ƒฅ ๋ณด๊ณ  ๋„˜์–ด๊ฐ”์„ ๋ฆฌ ์—†๊ฒ ์ฃ . ๊ทธ๋ž˜์„œ ๋‚˜์˜จ๊ฒƒ์ด useCallback์ž…๋‹ˆ๋‹ค. ์ €๋ฒˆ ๊ธ€์˜ useMemo์™€ ๋น„์Šทํ•˜๊ฒŒ ํผํฌ๋จผ์Šค์™€ ํšจ์œจ์„ฑ์„ ์œ„ํ•œ ๊ฐœ๋…์œผ๋กœ ๋งŒ๋“ค์–ด ์กŒ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์˜ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

const UseCallbackExample = () => {
  const [string, setString] = useState('');
@ninanung
ninanung / ReactHooks3.md
Last active November 22, 2020 11:02
๋•Œ๋Šฆ์€ React Hooks ์‹œ๋ฆฌ์ฆˆ 3ํƒ„ - useContext/useMemo

์ด ๊ธ€์˜ ์ฝ”๋“œ๋Š” ์ €์ž์˜ Github์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋•Œ๋Šฆ์€ React Hooks ์‹œ๋ฆฌ์ฆˆ 3ํƒ„ - useContext/useMemo

useContext

useContext๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € React์˜ Context๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๊ณต์‹ ํŽ˜์ด์ง€์— ์ž์„ธํ•˜๊ฒŒ, ์‹ฌ์ง€์–ด ํ•œ๊ธ€๋กœ ์ ํ˜€์žˆ์œผ๋‹ˆ ๋ชจ๋ฅด๊ฒ ๋‹ค ํ•˜์‹œ๋Š” ๋ถ„๋“ค์€ ๋จผ์ € ๋ณด์‹œ๋Š”๊ฑธ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. Context, ๊ทธ๊ฒƒ์€ React์—์„œ props๋ฅผ ๋„˜๊ธฐ๋Š” ๊ณผ์ •์„ ๋•๊ธฐ์œ„ํ•ด ๋งŒ๋“ค์–ด ์กŒ์Šต๋‹ˆ๋‹ค. ์ €-๊ธฐ ๋ฐ‘์—์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์œ„ํ•ด ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋งˆ๋‹ค props๋ฅผ ๋„˜๊ธฐ๋Š” ๊ฑด ๋น„ํšจ์œจ์ ์ด๋‹ˆ๊นŒ์š”. ํ•˜์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง„ Context์กฐ์ฐจ๋„ ์™„๋ฒฝํ•˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ ํ•˜๋‚˜์˜ Context๋ฅผ ์œ„ํ•ด์„œ๋Š” ํ•˜๋‚˜์˜ Wrapper๊ฐ€ ํ•„์š”ํ•œ๋ฐ, ์ด ๋ง์€ ๊ฒฐ๊ตญ ๋งŽ์€ Context๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋งŽ์€ Wrapper๊ฐ€ ํ•„์š”ํ•ด์ง„๋‹ค๋Š” ๋ง์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๋ณต์žกํ•œ React ํ”„๋กœ์ ํŠธ๋ฅผ Wrapper Hell๋กœ ๋งŒ๋“ค์–ด ๋ฒ„๋ฆฌ๊ธฐ ์ถฉ๋ถ„ํ•œ ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ useContext๊ฐ€ ํƒ„์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

useContext๋Š” ๋”์ด์ƒ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ Context๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด

@ninanung
ninanung / ReactHooks2.md
Last active November 14, 2022 17:30
๋•Œ๋Šฆ์€ React Hooks ์‹œ๋ฆฌ์ฆˆ 2ํƒ„ - useEffect

์ด ๊ธ€์˜ ์ฝ”๋“œ๋Š” ์ €์ž์˜ Github์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋•Œ๋Šฆ์€ React Hooks ์‹œ๋ฆฌ์ฆˆ 2ํƒ„ - useEffect

useEffect

์ง€๋‚œ๊ธ€์—์„œ useState๋ฅผ ์ด๋ฏธ ์‚ดํŽด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•˜์ž๋ฉด "ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ๋„ state๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค! ๊ฐœ๊ฟ€!" ์ด์—ˆ์ฃ ? ํ•˜์ง€๋งŒ ์‚ฌ์šฉ๋งŒ ํ•œ๋‹ค๊ณ  ๋‹ค๊ฐ€ ์•„๋‹Œ๊ฒƒ์ด ์šฐ๋ฆฌ๋‚ด ์ฝ”๋”ฉ ์ธ์ƒ์ด๊ณ , ๋ณต์žกํ•œ ๋กœ์ง์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์‚ดํŽด๋ณผ ํ•„์š”๊ฐ€ ๋‹น์—ฐํžˆ ์žˆ์Šต๋‹ˆ๋‹ค. useEffect๋Š” ๊ทธ๋Ÿฌํ•œ ๊ธฐ๋Šฅ๋“ค ์ค‘ ํ•˜๋‚˜๋กœ useState๊ฐ€ ๊ธฐ์กด์˜ ๋ฐฉ์‹์„ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ํ•ด๋‹น ๊ธฐ๋Šฅ ์—ญ์‹œ componentDidUpdate์™€ componentDidMount๋ฅผ ๋Œ€์‹ ํ•œ๋‹ค๊ณ  ๋ด๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ ๊ธฐ๋Šฅ์„ ๋จผ์ € ๋งํ•ด๋ณด์ž๋ฉด, ๋ฆฌ์—‘ํŠธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง๋ ๋•Œ ์ž๋™์œผ๋กœ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ง€๋‚œ๊ธ€์—์„œ ์„ค๋ช…ํ•œ Hook์„ ์ด๋ฅผ ํ†ตํ•ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋„ค์š”. ํŠน์ • ๋™์ž‘์ด ๋ฐœ์ƒํ•˜๋ฉด ํŠน์ • ํ–‰๋™์„ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค. ๋„ค, Hook์ž…๋‹ˆ๋‹ค.

const UseEffectExample = () => {
 const [test, setTest] = useState('initial value');
@ninanung
ninanung / ReactHooks1.md
Last active May 17, 2020 09:19
๋•Œ๋Šฆ์€ React Hooks ์‹œ๋ฆฌ์ฆˆ 1ํƒ„ - ๊ฐœ์š”/useState

์ด ๊ธ€์˜ ์ฝ”๋“œ๋Š” ์ €์ž์˜ Github์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋•Œ๋Šฆ์€ React Hooks ์‹œ๋ฆฌ์ฆˆ 1ํƒ„ - ๊ฐœ์š”/useState

๋‚˜์˜จ์ง€๊ฐ€ ์–ธ์ œ์ธ๋ฐ ์ง€๊ธˆ์—์„œ์•ผ ์ด๊ฑธ...?

๊ทธ๊ฑด ์ œ๊ฐ€ ์ด์ œ์„œ์•ผ ์ด๊ฑธ ์•Œ์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋Šฆ๊ฒŒ๋ผ๋„ ์•Œ์•˜์œผ๋‹ˆ ์‹œ์ž‘ํ•ด์•ผ์ฃ  ๋ณ„์ˆ˜ ์žˆ๋‚˜์š”.

๊ฐœ์š”