[Nuxt] Update State with Vuex Actions in Nuxt.js

來源:互聯網
上載者:User

標籤:http   less   tps   map   items   ons   als   exp   --   

You can conditionally add classes to Vue.js templates using v-bind:class. This will help display the status of a todo as you add a Vuex action to patch todos. This lesson walks you through setting up a toggle button that triggers a toggle action to patch todos in Vuex.

 

<template>  <div>    <form @submit.prevent="add(task)">      <input v-model="task" type="text" />      <input type="submit" value="ADD">    </form>    <article class="pa3 pa5-ns">      <ul class="list pl0 ml0 center mw6 ba b--light-silver br2">        <li v-for="todo of todos" class="flex items-center ph3 pv3 bb b--light-silver">          <span v-bind:class="{strike: todo.complete}" class="flex-auto">{{todo.id}} {{todo.task}}</span>          <button @click="toggle(todo)"><img src="https://icon.now.sh/check" alt="toggle"></button>          <button @click="remove(todo)"><img src="https://icon.now.sh/trash" alt="delete"></button>        </li>      </ul>    </article>  </div></template><script>  import { mapState, mapActions } from ‘vuex‘  import {init} from ‘./shared‘  export default {    fetch: init,    computed: {      ...mapState({        todos: (state) => state.todos      })    },    data () {      return {        task: ‘Some data‘      }    },    methods: {      ...mapActions([        ‘add‘,        ‘remove‘,        ‘toggle‘      ])    }  }</script>

 

store/index.js:

import Vuex from ‘vuex‘import axios from ‘axios‘const store = () => new Vuex.Store({  state: {    todos: [    ]  },  mutations: {    init (state, todos) {      state.todos = todos    },    add (state, todo) {      state.todos = [        ...state.todos,        todo      ]    },    remove (state, todo) {      state.todos = state.todos.filter((t) => {        return t.id !== todo.id      })    },    toggle (state, todo) {      state.todos = state.todos.map(t => {        return t.id === todo.id            ? todo            : t      })    }  },  actions: {    async add (context, task) {      const commit = context.commit      const res = await axios.post(‘https://todos-cuvsmolowg.now.sh/todos‘, {        task,        complete: false      })      commit(‘add‘, res.data)    },    async remove ({commit}, todo) {      await axios.delete(`https://todos-cuvsmolowg.now.sh/todos/${todo.id}`)      commit(‘remove‘, todo)    },    async toggle ({commit}, todo) {      const res = await axios.patch(`https://todos-cuvsmolowg.now.sh/todos/${todo.id}`, {complete: !todo.complete})      commit(‘toggle‘, res.data)    }  }})export default store

 

[Nuxt] Update State with Vuex Actions in Nuxt.js

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.