Skip to content
This repository was archived by the owner on Jul 10, 2019. It is now read-only.

Commit 57e5150

Browse files
committed
feat: update life-cycle example
1 parent b4c2e94 commit 57e5150

File tree

2 files changed

+70
-10
lines changed

2 files changed

+70
-10
lines changed

src/pages/example/api.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export default class Api extends Vue {
2828
// @ts-ignore
2929
public async fetch({ store, params, error }: any): Promise<void> {
3030
await console.log('fetch')
31-
// await store.$store.dispatch('api/fetchApi', {
31+
// await store.dispatch('api/fetchApi', {
3232
// hoge: 'foo'
3333
// })
3434
}

src/pages/example/life-cycle.vue

Lines changed: 69 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,99 @@
22
div
33
h1.title
44
| life-cycle
5-
p {{ message }}
5+
p asyncDataMessage: {{ asyncDataMessage }}
6+
p fetchMessage: {{this.$store.state.api.result}}
7+
p beforeCreateMessage: {{ beforeCreateMessage }}
8+
p createdMessage: {{ createdMessage }}
9+
p beforeMountMessage: {{ beforeMountMessage }}
10+
p mountMessage: {{ mountMessage }}
11+
p beforeDestroyMessage: {{ beforeDestroyMessage }}
12+
p destroyedMessage: {{ destroyedMessage }}
613
</template>
714

815
<script lang="ts">
916
import { Component, Vue } from 'nuxt-property-decorator'
17+
import { AxiosRequestConfig } from 'axios'
18+
import { IApiPayload } from '@/interface/IApiPayload'
1019
1120
@Component
1221
export default class LifeCycle extends Vue {
13-
message: string = 'open devTool!'
22+
// リクエスト用ペイロード
23+
public payload: IApiPayload = {
24+
hoge: 'foo'
25+
}
26+
27+
public asyncDataMessage: string = ''
28+
public beforeCreateMessage: string = ''
29+
public createdMessage: string = ''
30+
public beforeMountMessage: string = ''
31+
public mountMessage: string = ''
32+
public beforeDestroyMessage: string = ''
33+
public destroyedMessage: string = ''
34+
35+
// asyncData では return で data を返す必要がある
36+
// 逆にいうとこれ以外で vue に反映できない
37+
public async asyncData({ $axios }) {
38+
// this is undefined
39+
const { apiResult }: any = await $axios.$get(
40+
'http://localhost:5000/api-waiting-for-5-seconds',
41+
{
42+
params: {
43+
hoge: 'fuga'
44+
}
45+
} as AxiosRequestConfig
46+
)
47+
48+
return {
49+
asyncDataMessage: apiResult
50+
}
51+
}
52+
53+
// fetch は store を呼び出せるので、 vuex を使うことができる
54+
public async fetch({ store }) {
55+
// this is Vue instance
56+
await store.dispatch('api/fetchApi', this.payload)
57+
}
1458
1559
// https://ja.nuxtjs.org/guide/plugins
1660
// Vue インスタンスの ライフサイクル において、beforeCreate と created フックのみが クライアントサイドとサーバーサイドの両方 で呼び出されることに注意してください
1761
// それ以外のすべてのフックはクライアントサイドでのみ呼び出されます
18-
beforeCreate() {
62+
public beforeCreate() {
1963
console.log('beforeCreate')
64+
this.beforeCreateMessage = 'beforeCreateMessage'
2065
}
21-
created() {
66+
// created では $el はまだ使えない
67+
public async created() {
2268
console.log('created')
23-
console.log('RUNTIME_ENV: ', process.env.RUNTIME_ENV)
69+
const { apiResult }: any = await this.$axios.$get(
70+
'http://localhost:5000/api-waiting-for-5-seconds',
71+
{
72+
params: this.payload
73+
} as AxiosRequestConfig
74+
)
75+
console.log('apiResult:', apiResult)
76+
this.createdMessage = apiResult
77+
console.log('created $el:', this.$el) // undefined
2478
}
2579
2680
// これ以降のメソッドはクライアントサイドでのみ実行されます
27-
beforeMount() {
81+
public beforeMount() {
2882
console.log('beforeMount')
83+
this.beforeMountMessage = 'beforeMountMessage'
2984
}
30-
mounted() {
85+
// mounted では $el は使える
86+
public mounted() {
3187
console.log('mounted')
88+
this.mountMessage = 'mountMessage'
89+
console.log('mounted $el:', this.$el)
3290
}
33-
beforeDestroy() {
91+
public beforeDestroy() {
3492
console.log('beforeDestroy')
93+
this.beforeDestroyMessage = 'beforeDestroyMessage'
3594
}
36-
destroyed() {
95+
public destroyed() {
3796
console.log('destroyed')
97+
this.destroyedMessage = 'destroyedMessage'
3898
}
3999
40100
public head() {

0 commit comments

Comments
 (0)