Vue Study

Vue3 - Provide/Inject

2020. 11. 4. 23:34
๋ชฉ์ฐจ
  1. ๐Ÿ“Œ ๋ชฉ์ฐจ
  2. ๐Ÿ“Œ Introduction
  3. ๐Ÿ“Œ What is Provide/Inject?
  4. ๐Ÿ“Œ Basic Usage
  5. ๐Ÿ“Œ Reactice Usage
  6. ๐Ÿ“Œ Conclusion
  7. ๐Ÿ“Œ Reference
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ ๋ชฉ์ฐจ

  • Introduction
  • What is Provide/Inject?
  • Usage
  • Reactice Usage
  • Conclusion
  • Reference

๐Ÿ“Œ Introduction

์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ƒˆ๋กœ์šด provide/inject์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์„œ๋ณผ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ What is Provide/Inject?

๋งŒ์•ฝ ์ด๋Ÿฐ ์ƒํ™ฉ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ด๋ณผ๊ฒŒ์š”.

์ƒ์œ„์˜ ๋ถ€๋ชจ์—์„œ ๋ฌผ๋ก  props๋กœ ์ „๋‹ฌ์ด ๊ฐ€๋Šฅํ•˜๊ฒ ์ง€๋งŒ ์ข€๋” ๊น”๋”ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•œ๋ฒˆ์— ์ „๋‹ฌํ•  ์ˆœ ์—†์„๊นŒ์š”?

๋„ค ๊ทธ๊ฒŒ provide/inject์ž…๋‹ˆ๋‹ค. ๐ŸŽ‰

๐Ÿ“Œ Basic Usage

์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ ์ž…๋‹ˆ๋‹ค.

|_App -> provide โญ๏ธ
  |_MyDiv1
    |_MyDiv2
      |_MyDiv3
        |_InjectedPractice -> inject โญ๏ธ
// App.vue

import { provide } from 'vue';
import MyDiv1 from './components/MyDiv1';

export default {
  name: 'App',
  components: {
    MyDiv1
  },
  setup() {
    provide('location', 'North Pole'); // ์—ฌ๊ธฐ์„œ provide๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.
  }
};
// InjectedPractice.vue

import { inject } from 'vue';

export default {
  setup() {
    const userLocation = inject('location', 'The universe');
    console.log(userLocation); // North Pole๋กœ ์ฐํž™๋‹ˆ๋‹ค.
    return {
      userLocation
    };
  }
};

์ด๋ ‡๊ฒŒ ํ•ด์ค„์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ Reactice Usage

// App.vue

import { provide, ref } from 'vue';
import MyDiv1 from './components/MyDiv1';

export default {
  name: 'App',
  components: {
    MyDiv1
  },
  setup() {
    const location = ref('North Pole');
    const updateLocation = () => {
      location.value = 'South Pole';
    };
    provide('location', location); // reactice๋กœ ๋‚ด๋ ค์ค„์ˆ˜์žˆ์Šต๋‹ˆ๋‹ค. โญ๏ธ
    provide('updateLocation', updateLocation); // update ํ•จ์ˆ˜๋„ ๊ฐ™์ด ๋‚ด๋ ค์ค„๊ฒŒ์š”. โญ๏ธ
  }
};
// InjectedPractice.vue
import { inject } from 'vue';

export default {
  setup() {
    const userLocation = inject('location', 'The universe');
    const userUpdateLocation = inject('updateLocation'); // userLocation์ด South Pole๋กœ ๋ณ€๊ฒฝ์ด ๋ฉ๋‹ˆ๋‹ค. โญ๏ธ
    return {
      userLocation,
      userUpdateLocation
    };
  }
};

๐Ÿ“Œ Conclusion

์ด๋ ‡๊ฒŒ Vue3์—์„œ์˜ provide์™€ inject์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ„๋‹จํ•œ ํ”„๋กœ์ ํŠธ๋“ค์€ ๊ตณ์ด vuex๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ• ๊นŒ? ๋ผ๋Š” ์˜๋ฌธ์ด ๋“ญ๋‹ˆ๋‹ค. ์•„๋งˆ react์—์„œ์˜ context api์™€ useReducer์™€ ๊ฐ™์€ ๊ฐœ๋…์ผ๊ฒƒ์œผ๋กœ ์ถ”์ธก์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ๋งŒ๋‚˜์š”~~

๐Ÿ“Œ Reference

  • Vue3 ๊ณต์‹ ๋ฌธ์„œ
๋ฐ˜์‘ํ˜•

'Vue Study' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Vue3 - v model  (0) 2020.11.08
Vue3 - teleport  (0) 2020.11.08
Vue3 - LifeCycle  (0) 2020.10.30
Vue3 - computed and watch  (0) 2020.10.28
Vue3 - Refs  (0) 2020.10.27
  1. ๐Ÿ“Œ ๋ชฉ์ฐจ
  2. ๐Ÿ“Œ Introduction
  3. ๐Ÿ“Œ What is Provide/Inject?
  4. ๐Ÿ“Œ Basic Usage
  5. ๐Ÿ“Œ Reactice Usage
  6. ๐Ÿ“Œ Conclusion
  7. ๐Ÿ“Œ Reference
'Vue Study' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • Vue3 - v model
  • Vue3 - teleport
  • Vue3 - LifeCycle
  • Vue3 - computed and watch
eddie0329
eddie0329
Front-end Developer
๋ฐ˜์‘ํ˜•
eddie0329
Eddie Sunny's Blog
eddie0329
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (100)
    • Summary of Book (0)
    • Vue Study (11)
    • Vue TDD (9)
    • Vue BDD (5)
    • Design Pattern (9)
    • Javascript Study (3)
    • React Study (15)
    • React TDD (1)
    • Vue Storybook (2)
    • Refactoring (0)
    • Graphql_Apollo (3)
    • Svelte (8)
    • Open Source (1)
    • D3 (4)
    • Typescript (1)
    • CSS (2)
    • Android (0)
    • Java (0)
    • Kotlin (0)
    • ์žก๋‹ด (0)
    • Swift (19)
    • Rust (2)
    • ํšŒ์‚ฌ์ด์•ผ๊ธฐ (2)
    • ReactNative Study (2)
    • Vitest (0)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • Home

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • vue bdd
  • storybook6
  • vue tdd
  • D3
  • vue3
  • slot ํŒจํ„ด
  • react
  • apollo
  • Javascript
  • client only
  • Design Pattern
  • Cypress
  • react-component-slot
  • svelte
  • javascript pattern
  • react useRef
  • TypeScript
  • jest
  • vue cypress
  • BDD
  • Vue
  • vue storybook
  • React Native
  • TDD
  • swift5
  • Kotlin
  • CSS
  • Vue test
  • Nextjs
  • swift

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.
eddie0329
Vue3 - Provide/Inject
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.