pages/index.vue
<template> <div class="container"> <h2>{{ title }}</h2> <p>{{ msg }}</p> <!-- route link --> <hr> <router-link to="/other">go to other page</router-link> <pre>[{{now}}]</pre> <!-- store deprecated from Nuxt3 --> <hr> <p>get store</p> <p>{{$store.state.message}}</p> <br> <p>store.cnt = {{$store.state.cnt}}</p> <p>[store]</p> <button v-on:click="doClick">count++</button> <!-- mutation --> <hr> <p>[mutation] count up </p> <!-- <button @click="$store.commit('count_up')">count up.</button> --> <!-- <button v-on:click="doCountUp">count up.</button> --> <!-- <button @click="doCountUp">count up.</button> --> <button @click.right.prevent="$store.commit('count_n_plus',1)" @click.left="$store.commit('count_n_plus',2)"> count N up. </button> <p>[mutation] clear count </p> <button v-on:click="doCountClear">count clear.</button> <!-- <button @click="doCountClear">count clear.</button> --> <p>[mutation] set object </p> <button @click="$store.commit({type:'set_obj',message:'new message!',num:1})">set object</button> <!-- actions --> <hr> <p>[actions] actions </p> <button @click="$store.dispatch('do_action')">call run_action</button> </div> </template> <script> import Logo from '~/components/Logo.vue' export default { components: { Logo, }, created: function(){ setInterval( ()=>{ var d = new Date(); this.now = d.getHours()+':'+d.getMinutes()+':'+d.getSeconds(); }, 1000); }, data:function(){ return { title: 'Hello', msg: 'this is msg', now: 'waiting...', }; }, methods: { doClick: function(){ console.log('doClick'); this.$store.state.cnt++; }, doCountUp: function(){ this.$store.commit('count_up') }, doCountClear: function(){ this.$store.commit('count_clear') } } }; </script> <style> p{ padding:5px; } pre{ padding:5px; } .container { margin: 0 auto; padding:40px; /* min-height: 100vh; justify-content: center; align-items: center; text-align: center; display: flex; */ } .title { font-family: 'Quicksand', 'Source Sans Pro', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; display: block; font-weight: 300; font-size: 100px; color: #35495e; letter-spacing: 1px; } .subtitle { font-weight: 300; font-size: 42px; color: #526488; word-spacing: 5px; padding-bottom: 15px; } .links { padding-top: 15px; } </style>