vuex实现简易计数器

<template> <div> <h1>Now count is {{counterValue}}</h1> <br> </div> </template> <script> import { getCount } from '../vuex/getters' export default { vuex: { getters: { counterValue: getCount } }, data () { return { } } } </script> <style scoped> h1 { color: #42b983; } </style>

Increate.vue

<template> <div> <button @click='increment'>click me + 3</button> <button @click='reduce'>click me - 1</button> </div> </template> <script> import { incrementCounter, reduceCounter } from '../vuex/action' export default { vuex: { actions: { increment: incrementCounter, reduce: reduceCounter } }, data: function () { return { } }, computed: {}, ready: function () {}, attached: function () {}, methods: {}, components: {} } </script> <style lang="css"> </style>

src/vuex

store.js

import Vue from 'vue' import Vuex from 'Vuex' Vue.use(Vuex) const state = { count: 0 } const mutations = { INCREMENT (state, n) { state.count = state.count + n }, REDUCE (state) { state.count-- } } export default new Vuex.Store({ state, mutations })

action.js

export const incrementCounter = ({dispatch}) => dispatch('INCREMENT', 3) export const reduceCounter = ({dispatch}) => dispatch('REDUCE')

getters.js

export function getCount (state) { return state.count }

src/App.vue

<template> <div> <img src="https://www.jb51.net/article/assets/logo.png"> <hello></hello> <increate></increate> </div> </template> <script> import Hello from './components/Hello' import Increate from './components/Increate' import store from './vuex/store' export default { store, components: { Hello, Increate } } </script> <style> html { height: 100%; } body { display: flex; align-items: center; justify-content: center; height: 100%; } #app { color: #2c3e50; margin-top: -100px; max-width: 600px; font-family: Source Sans Pro, Helvetica, sans-serif; text-align: center; } #app a { color: #42b983; text-decoration: none; } .logo { width: 100px; height: 100px } </style>

src/main.js

// 入口文件 import Vue from 'vue' import App from './App' import VueRouter from 'vue-router' import VueResource from 'vue-resource' /* eslint-disable import VueRouter from 'vue-router'no-new */ new Vue({ el: 'body', components: { App } }) Vue.use(VueRouter) Vue.use(VueResource) var router = new VueRouter({ hashbang: false, // 设置为true时,所有的路径都会被格式化为#!开头 history: true // 默认false,利用history.pushState(), history.replaceState()来管理浏览历史记录 }) // require('./routers')(router) router.start(App, '#app')

效果图:

vuex实现简易计数器

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzgfgj.html