zoukankan      html  css  js  c++  java
  • [Nuxt] Use Vuex Actions to Delete Data from APIs in Nuxt and Vue.js

    You'll begin to notice as you build out your actions in Vuex, many of them will look quite similar. Creating a remove action looks almost the same as the add action except for using the axios.delete method then filtering out the deleted todo once the response comes back.

    Add a remove button to the todo list:

    <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 class="flex-auto">{{todo.id}} {{todo.task}}</span>
              <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'
          ])
        }
      }
    </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
          })
        }
      },
      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)
        }
      }
    })
    
    export default store
  • 相关阅读:
    SQL SERVER的检查点checkpoint
    MySQL备份说明
    声明对象和创建对象的区别
    getParameter的用法总结
    Jsp的九大对象,七大动作,三大指令
    为什么内部类访问的外部变量需要使用final修饰
    java synchronized详解
    网上选课系统需求说明书
    第三次作业
    第二次作业
  • 原文地址:https://www.cnblogs.com/Answer1215/p/7236480.html
Copyright © 2011-2022 走看看