์๋ฐ์คํฌ๋ฆฝํธ๋ก ํ๋ก ํธ์๋๋ ๊ฐ๋ฐํ๊ณ ๋ฐฑ์๋๋ ๊ฐ๋ฐํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ์์
๋๋ค. ๐
๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ ์ง๋ฌธ์ ์ธ์ ๋ ํ์ํ์ค๋ ํธํ๊ฒ ์ด๋ฉ์ผ๋ก ์ฐ๋ฝ์ฃผ์ธ์!
๐blog : https://seongdohee.github.io/
๐email : seong0420hei@gmail.com
Posts
Q&A
store ์ฌ์ฉ ๋ฐฉ๋ฒ ๊ด๋ จ ์ง๋ฌธ์ ๋๋ค.
์๋ ํ์ธ์! ๋๊ฐ์ง ์ง๋ฌธ์ ํด์ฃผ์ จ๋๋ฐ, ๋๋ฒ๋งํ์ฌ ๋ต๋ณ๋๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค ^^ 1. ๊ฒฐ๋ก ์ ์ผ๋ก๋ง ๋ง์๋๋ฆฌ์๋ฉด ๋ค. ์ค์ ๋ก ์คํ ์ด์ ์ ์ฅํด์ ์ฌ์ฉํ๊ธฐ๋ ํฉ๋๋ค. 2. ์ ์ฅํ๋ ์์ ํ๊ณ๋ ์์ง๋ง ์ฒ๋ฆฌํ ๋ฐ์ดํฐ๊ฐ ๋ง๋ค๋ฉด ์ฑ๋ฅ ์ด์๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ๋ณดํต ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋๋ ๋ง์ํ์ ๋๋ก ํ์ํ ๋ ๋ถ๋ฌ์ ์ฒ๋ฆฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๊ฒ์ํ๊ฐ์ ๋ฆฌ์คํธ ํ์์ ํ์ด์ง ์ฒ๋ฆฌ๋ฅผ ํ๊ฑฐ๋ ๋ฌดํ์คํฌ๋กค ์ฒ๋ฆฌ๋ฅผ ํ์ง์? ๊ฐ์ ์ด์ ์ ๋๋ค ^^ ๊ฐ์ฌํฉ๋๋ค.
- 0
- 1
- 206
Q&A
removeItem ์์ element ๊ฐ ํ๋ ๋จ์์ ๋ ์ญ์ ๊ฐ ๋์ง ์๋ ๋ฌธ์
์๋ ํ์ธ์! ์ผ๋จ ๋ณด๋ด์ฃผ์ ์ฝ๋๋ ์ฌ๋ฐ๋ฅธ ์ ๊ทผ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ณดํต ๋ฐ์ดํฐ์์ id๋ ํด๋น ์์ดํ ์ ๊ณ ์ ํ ๊ฐ์ผ๋ก ์ค์ ๋๋ฏ๋ก, findIndex๋ฅผ ์ฌ์ฉํ์ ๊ฒ์ ์์ฃผ ํผ๋ฅญํ ํ๋จ์ด์ญ๋๋ค.๐๐ (์ ๊ฐ ์์ ๋ก ์ฝ๋ฉํ ๋ถ๋ถ์ ํธ์๋ฅผ ์ํด ์ผ๋ฐ์ ์ธ id์๋ ๋ค๋ฅด๊ฒ array์์์ ์์ดํ ์ ์ธ๋ฑ์ค์ ์ฉ๋๋ก ์ฌ์ฉํ์์ต๋๋ค.) ํ์ง๋ง ๊ทธ ์ ์ ์ ์ญ์ ๊ฐ ๋์ง ์๋ ๋ฒ๊ทธ๊ฐ ์๋ ๊ฒ ์ธ์ง ํ์ธํด ๋ณด๋, ItemInput ์ปดํฌ๋ํธ์์ addItem ํ ๋, id ๊ฐ์ ์ค์ ํ๋ ๋ถ๋ถ์์ ๋ฌธ์ ๊ฐ ์๋๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ใ ใ addItem() { this.$store.commit('addItem', { id: this.todoList.length + 1, title: this.title, status: 'active', });} ์ฝ๋์ ๊ฐ์ด todolist ์์ดํ ๊ฐ์ + 1 = id ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด id๊ฐ์ ์คํ ์ด์์ removeItem, ChangeStatus์์ todolist Array์ ํน์ item์ ์ฐพ๋ ์ธ๋ฑ์ค ๊ฐ์ด ๋ฉ๋๋ค. ์ฌ๊ธฐ์ ํฌ์ธํธ๋ โญArray์ ์ธ๋ฑ์ค๋ 0๋ถํฐ ์์โญํ๋ค๋ ๊ฒ์ ๋๋ค!! ๋ฐ๋ผ์ ์์ ๋ง๋ฏธ์ ์๋ก ์ถ๊ฐํ ์์ดํ ์ id๋ ๊ธฐ์กด ์์ดํ ๊ฐ์์ธ 2๊ฐ์ 1์ ๋ํด 3์ด ๋๊ณ , todolist Array์ ์ธ๋ฒ์งธ์ ์ถ๊ฐ๋๊ณ ์ธ๋ฑ์ค๋ 2๊ฐ ๋ฉ๋๋ค. ex. [์ฒซ๋ฒ์งธ ์์ดํ : ์ธ๋ฑ์ค0, ๋๋ฒ์งธ ์์ดํ : ์ธ๋ฑ์ค1, ์๋ก ์ถ๊ฐํ ์ธ๋ฒ์งธ ์์ดํ ์ธ๋ฑ์ค2] id์ ์ธ๋ฑ์ค๊ฐ ๋์ผํ์ง ์๊ธฐ๋๋ฌธ์ ์ด ์ถ๊ฐ๋ ์์ดํ ์ ์ญ์ ๊ฐ ๋์ง ์์ต๋๋ค. ์ด์ ๋ฐ๋ผ ํผ๋์ ๋๋ฆฐ ์ ์ ๋ง ์ฃ์กํฉ๋๋ค ใ ใ ๋น ๋ฅธ ์์ผ๋ด์ ์๋ชป ๋ ๋ถ๋ถ์ ์ ๋ฐ์ดํธ ๋ ์ ์๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ค๋ฅธ ๋ฌธ์ ์ฌํญ์ด ์์ผ์๋ฉด ํธํ๊ฒ ์ง๋ฌธ ๊ฒ์ํ ๋จ๊ฒจ์ฃผ์ธ์!
- 0
- 2
- 328
Q&A
Property '$route' does not exist on type 'ItemList'. ์ด ์๋ฌ๋ ๋ฌด์์ธ๊ฐ์..?
์๋ ํ์ธ์! $route๊ฐ this, ์ฆ class ๋ด๋ถ์ ํ์ ์ด ์ ์๋์ด ์์ง ์์ ๋ฐ์ํ๋ typescript warning์ ๋๋ค. ์๋์ ๊ฐ์ด vue-router์์ type์ ์๋์ผ๋ก importํด์ ํด๊ฒฐํ์ค ์ ์์ต๋๋ค. import { Vue } from 'vue-property-decorator' import 'vue-router/types/vue' @Component export default class MyComp extends Vue { click() {console.log(this.$route)} } ์์ธํ ๋ด์ฉ์ ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค. https://github.com/nuxt-community/typescript-template/issues/23
- 0
- 1
- 836
Q&A
Cannot find module '@/components/message.vue'.
์๋ ํ์ธ์. https://github.com/vuejs/vetur/issues/762 ์ด ๋งํฌ์ ๋ง์ง๋ง์ฏค์ ๋ณด์๋ฉด For now, the quickest fix for this error is to rearrange your folder structure in VS Code. To fix: Manually drag your Vue App's Folder to the top of your opened projects inside of your VS Code workspace. ์ด๋ฐ ๋ด์ฉ์ด ์์ต๋๋ค. vue ํ๋ก์ ํธ ํด๋๋ฅผ ์คํํด์ ํด๊ฒฐ๋์๋ค๋ ๋ด์ฉ์ ๋๋ค. tsconfig.json ํ์ผ์ด vue_study ํด๋์ ๋ฃจํธ์ ์๋๊ฒ์ด ์ค์ํ๊ฒ์ด ์๋๋ผ ํด๋น vue ํ๋ก์ ํธ๊ฐ vscode workspace์ ๋ฃจํธ์ ์๋๊ฐ ์ค์ํ๊ฒ ๊ฐ์ต๋๋ค. vue_study ํด๋๋ฅผ ์ด์ด์ ์ฌ์ฉํ์ ๊ฒ์ธ์ง, vue_study ํด๋๊ฐ ํฌํจ๋ ์์ ํด๋๋ฅผ ์ด์ด์ ์ฌ์ฉํ์ ๊ฒ์ธ์ง ๋จผ์ ํ์ธํด ๋ณด์๊ธฐ ๋ฐ๋๋๋น.. vue ์ ์ด์๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์์ธํ ๋์์ ๋ชป๋๋ ค ์ฃ์กํฉ๋๋ค.ใ ใ ๊ทธ๋ผ ๋๋ฒ์งธ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ ๋๋ฆฌ๊ฒ ์ต๋๋ค. export default ๋ฅผ ํด๋์ค ์์ ๋ถ์ด์ง ์์ผ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๋ ๋ง์์ด์์ฃ ? (์ ๊ฐ ์ ๋๋ก ์ดํดํ๊ฑด์ง ใ ใ ) App.vue๋ main.ts์์ import ํด์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ฐ๋ผ์ export default๋ฅผ ๋ถ์ฌ์ฃผ๋ ๊ฒ์ ๋๋ค. ์๋ ๋งํฌ์ import/export์ ๋ํ ์์ธํ ์ค๋ช ์ด ์์ต๋๋ค. https://medium.com/@enro2414_40667/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-export-import%EC%A0%95%EB%A6%AC-137ac9e327d9 ์ ๊ฐ ์ง๋ฌธ์ ์๋ชป ์ดํดํ ๊ฑฐ๋ผ๋ฉด ์ข ๋ ๊ตฌ์ฒด์ ์ธ ๋ด์ฉ์ผ๋ก ์ฌ์ง๋ฌธ ๋ถํ๋๋ฆฌ๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
- 0
- 6
- 2.8K
Q&A
Cannot find module '@/components/message.vue'.
์๋ ํ์ธ์. ํด๋น ํ๋ก์ ํธ๋ฅผ cloneํด์ ํ์ธํด ๋ณด์๋๋ฐ, ์ผ๋จ ๋ง์ํด์ฃผ์ Home.vue๋ผ๋ ํ์ผ์ด ์์ต๋๋ค ใ ใ ์คํํด๋ณด๋ Cannot find module~ ์ด๋ผ๋ ์๋ฌ๋ ๋ฐ์ํ๊ณ ์์ง ์๊ตฌ์. ์๋ง vscode์ชฝ ์ด์์ธ๋ฏ ํฉ๋๋ค. ์ ๊ฐ vscode๋ฅผ ์ฌ์ฉํ์ง ์์์ ์ ํํ๋ ๋ชจ๋ฅด์ง๋ง... ์กฐ๊ธ ๊ฒ์ํด๋ณธ ๊ฒฐ๊ณผ ํน์ vscode์์ ํ๋ก์ ํธ์ ์์ ํด๋๋ก openํ์ฌ ์์ ํ๊ณ ๊ณ์ ๊ฒ์ ์๋์ง ํ์ธํด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค. (ex. ํ๋ก์ ํธ ํด๋ ์ด๋ฆ์ด vue-study๋ผ๋ฉด, vscode์์ vue-study์ ์์ ํด๋๋ก ์คํํ์ฌ ์์ ) tsconfig.json์ด root์ ์์ง ์์ผ๋ฉด ๋์ผํ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๋ฏ ํฉ๋๋ค. ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค. https://github.com/vuejs/vetur/issues/762 ๋๋ฒ์งธ๋ก ์ง๋ฌธ์ฃผ์ export default๋ Home.vue๊ฐ ์์ด์ ๋ต๋ณ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ใ ใ ๊ฐ์ฌํฉ๋๋ค.
- 0
- 6
- 2.8K
Q&A
Cannot find module '@/components/message.vue'.
esquared ๋ ์๋ ํ์ธ์? ํน์ ์ ๊ฐ ์ ์ฒด ์์ค๋ฅผ ํ์ธํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์๊น์? ์์ค ์ผ๋ถ๋ถ๋ง์ผ๋ก๋ ๋ฌธ์ ์ ํ์ ์ด ์ด๋ ต๋ค์ ใ ใ ๊นํ๋ธ๋ฑ์ ์ ๋ก๋ํ์๊ณ ์ฃผ์๋ฅผ ์๋ ค์ฃผ์๋ฉด ๋์์ ๋๋ฆด ์ ์๋๋ก ํ๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
- 0
- 6
- 2.8K
Q&A
Axios Post๋ณด๋ผ๋ ์ด๋ค ์์ผ๋ก ๊ตฌ์ฑํ๋๊ฒ ์ข์๊น์?
์๋ ํ์ธ์! AxiosService์์ instance์์ ์ค์ ํ header ๊ฐ์ instance๋ฅผ ํตํ ๋ชจ๋ ํธ์ถ์ ์ ์ฉ๋๋ ๊ฐ์ด๋ํต์ผ๋ header ๊ฐ์ด ์๋ค๋ฉด instance์ ์ค์ ํด์ ์ฐ์๋๊ฒ์ด ์ข์ต๋๋ค.ํ๋ฒ๋ง ์ค์ ํด๋์ผ๋ฉด ๋๋๊น์ ^^ ํน์ ํต์ ์์๋ง ์ฌ์ฉ๋๋ header๊ฐ์ด ์๋ค๋ฉด, ๋๋ฒ์งธ ์ฝ๋์ ๊ฐ์ด ์ธ๋ฒ์งธ ์ธ์๋ก header ๊ฐ์ ๋ฃ์ผ์๋ฉด ๋ฉ๋๋ค.์ฌ๊ธฐ์ ์ค์ ํ header ๊ฐ์ด instance์์ ์ค์ ํ header ๊ฐ๋ณด๋ค ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋๋ค. ์์ฑํ์ ์ฝ๋์์๋ config๋ฅผ ์๋์ ๊ฐ์ด ๊ณ ์น์ ์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค. const config: AxiosRequestConfig = { headers: { "content-type": "json" }};
- 0
- 1
- 629
Q&A
์๋ฌ ํ์ ์ง๋ฌธ์ด์!
์๋ ํ์ธ์! ์ฝ๋๋ฅผ ํ์ธํด ๋ณด๋, App.vue์ ์คํ ์ด๋ฅผ ํธ์ถํ๋ ๋ถ๋ถ์์ ์๋ฌ๊ฐ ๋ฐ์ํ๊ณ ์์ต๋๋ค. this.$store.dispatch('moduleB/editData', 'test'); vuex-module-decorator ์ปค๋ฎค๋ํฐ๋ฅผ ์ดํด๋ดค๋๋ฐ, ์ด์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋์ ์ผ๋ก ๋ชจ๋์ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ๊ถ์ฅํ๊ณ ์์ต๋๋ค.App.vue์ ์คํฌ๋ฆฝํธ ๋ถ๋ถ์ ์๋์ ๊ฐ์ด ์์ ํด ๋ณด์ ์ ^^ lang="ts"> import { Component, Vue } from 'vue-property-decorator'; import HelloWorld from './components/HelloWorld.vue'; import { getModule } from "vuex-module-decorators"; import MyStore from '@/store/moduleB.store.ts'; @Component({ components: { HelloWorld, }, }) export default class App extends Vue { moduleB: any; created(){ this.moduleB = getModule(MyStore, this.$store); this.moduleB.editData('test'); } } ์ ์ด๋ฐ ์๋ฌ๊ฐ ๋ฐ์ํ๋์ง, ์ ๋์ ๋ชจ๋์ ๊ฐ์ ธ์ค๋๊ฑธ ๊ถ์ฅํ๋์ง ๋ฑํ ๊ฐ๋ฐ์๋ ์ฝ๋ฉํธ๋ ์๋ค์ ... ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ ํ ๊ฒ์ ๋๋ค. https://github.com/championswimmer/vuex-module-decorators/issues/86https://github.com/championswimmer/vuex-module-decorators/issues/116
- 1
- 3
- 355
Q&A
์๋ ํ์ธ์! v-for(v-bind:key), slice() ๊ด๋ จ ์ง๋ฌธ์ด ์์ด์!
์๋ ํ์ธ์! 1. v-for์ :key ๊ด๋ จ ๋ง์ํด์ฃผ์ ๋๋ก ์ ๋ํฌํ ๊ฐ์ ๋ฃ์ด์ฃผ์ด์ผํฉ๋๋ค.์ด๋ Vue์์ ๊ฐ๋ณ DOM ๋ ธ๋๋ค์ ์ถ์ ํ๊ณ ๊ธฐ์กด ์๋ฆฌ๋จผํธ๋ฅผ ์ฌ์ฌ์ฉ, ์ฌ์ ๋ ฌํ๊ธฐ ์ํด์ ์ ๋๋ค.๋ณดํต, ์๋ฒ ํต์ ํด์ ๊ฐ์ ธ์จ list array๋ฅผ v-for๋ก ํํํ ๋์๋ ๋ฐ์ดํฐ๋ง๋ค ๊ณ ์ ํ id๊ฐ์ด ์์ด ๊ทธ๊ฒ์ ํ์ฉํ๋ ํธ์ ๋๋ค. ํด๋ผ์ด์ธํธ์์ ์์ฑํ array๋ฅผ ํํํ ๊ฒฝ์ฐ์๋ array index + ๋๋คํ ํด์๊ฐ or id ๊ฐ์ผ๋ก key ๊ฐ์ ๋ง๋ค๊ธฐ๋ ํฉ๋๋ค. ์ด์ฐ๋ฌ๋ "์ค๋ณต๋์ง ์๋ ์ ๋ํฌํ ๊ฐ"์ด ์ค์ํ ํคํฌ์ธํธ์์ ^^ 2. slice ๊ด๋ จ ์ด๋ถ๋ถ์ ์ ๊ฐ ๊ฐ์๋ฅผ ์ ์ํ ๋น์ ์ฐฉ๊ฐํ ๋ถ๋ถ์ด ์๋๋ฐ,javascript array api๋ค ์ค ์ฝ๋ฐฑ ํจ์์์ ํธ์ถํ array์ ์ง์ ์ํฅ์ ๋ผ์น๋ api๋ค์ด ์์ต๋๋ค.์๋ฅผ ๋ค์ด map ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ๊ทธ๋ ๊ตฌ์.๊ทธ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด์ slice()๋ฅผ ์ฌ์ฉํด ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํ ํ,๊ธฐ์กด ๋ฐฐ์ด์๋ ์ํฅ์ด ์๋๋ก ํ๋๊ฒ์ด ์ ์ ์๋์์ต๋๋ค.๊ทธ๋ฌ๋ filter์ ๊ฒฝ์ฐ์๋ map๊ณผ ๋ฌ๋ฆฌ ๊ธฐ์กด ๋ฐฐ์ด์ ์ํฅ์ ๋ผ์น์ง ์์ผ๋๊ธ์ด๋๊ป์ ๋ง์ํด์ฃผ์ ์ฝ๋(this.data.filter(...))๊ฐ ๋ ์ฌ๋ฐ๋ฅด๋ค๊ณ ํ ์ ์์ต๋๋ค. ํผ๋์ ๋๋ ค ๋๋จํ ์ฃ์กํฉ๋๋ค ใ .ใ
- 2
- 3
- 619
Q&A
์๋ฌ ํ์ ์ง๋ฌธ์ด์!
์๋ ํ์ธ์! ์ฌ๋ ค์ฃผ์ ์ฝ๋๋ง์ผ๋ก๋ ํ์ธ์ด ์ด๋ ต์ต๋๋ค ใ .ใ ํน์ ์ ์ฒด์ ์ธ ์ฝ๋๋ฅผ ํ์ธํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์๊น์? github๊ฐ์๊ณณ์ ํ๋ก์ ํธ ์ ๋ก๋ ํ์ ๋ค ๋งํฌ๋ฅผ ์๋ ค์ฃผ์๋ฉด ๋์์ ๋๋ฆด ์ ์๋๋ก ํ๊ฒ ์ต๋๋ค!
- 1
- 3
- 355