vue实现添加与删除图书功能

yizhihongxing

作为网站作者,我很愿意为您详细讲解“vue实现添加与删除图书功能”的完整攻略。

1.添加图书功能

首先,在vue中实现添加图书功能,需要先创建组件。接下来,我们先来看一个添加图书的示例:

1.1创建组件

我们先在src目录下创建一个名为“AddBook.vue”的组件。在这个组件中,我们需要定义一个表单,以便用户可以输入书籍信息。代码如下:

<template>
  <div>
    <h2>添加书籍</h2>
    <form>
      <!-- 书籍名称 -->
      <div>
        <label>书籍名称:</label>
        <input v-model.trim="bookName" type="text" />
      </div>
      <!-- 书籍作者 -->
      <div>
        <label>书籍作者:</label>
        <input v-model.trim="bookAuthor" type="text" />
      </div>
      <!-- 书籍价格 -->
      <div>
        <label>书籍价格:</label>
        <input v-model.trim="bookPrice" type="number" />
      </div>
      <button @click.prevent="addBook">添加</button>
    </form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      bookName: "",
      bookAuthor: "",
      bookPrice: ""
    };
  },
  methods: {
    addBook() {
      // 将表单数据打包成一个对象
      const book = {
        name: this.bookName.trim(),
        author: this.bookAuthor.trim(),
        price: parseFloat(this.bookPrice)
      };
      // 将对象传递给父组件
      this.$emit("add-book", book);
      // 清空表单数据
      this.bookName = "";
      this.bookAuthor = "";
      this.bookPrice = "";
    }
  }
};
</script>

这个组件包含一个表单,用户可以在表单中输入书籍信息,并点击“添加”按钮进行添加。当用户点击“添加”按钮时,addBook方法会将表单数据打包成一个对象,并使用$emit方法将这个对象传递给父组件(即包含AddBook组件的父组件)进行处理。

1.2父组件处理方法

由于表单数据需要在父组件中进行处理,所以我们需要在父组件中定义一个方法进行处理。代码如下:

<template>
  <div>
    <AddBook @add-book="addBook"></AddBook>
    <BookList :bookList="bookList" @delete-book="deleteBook"></BookList>
  </div>
</template>

<script>
import AddBook from "@/components/AddBook.vue";
import BookList from "@/components/BookList.vue";

export default {
  components: {
    AddBook,
    BookList
  },
  data() {
    return {
      bookList: []
    };
  },
  methods: {
    addBook(book) {
      // 将新书添加到书籍列表中
      this.bookList.push(book);
    },
    deleteBook(index) {
      // 从书籍列表中删除一本书
      this.bookList.splice(index, 1);
    }
  }
};
</script>

在父组件中,我们引入了AddBook和BookList两个组件,其中AddBook组件用于添加书籍,BookList组件用于展示书籍列表。

在父组件中,我们定义了两个方法:addBook方法用于将新书添加到书籍列表中,deleteBook方法用于从书籍列表中删除一本书。

1.3添加书籍

现在我们已经创建了AddBook组件和父组件的逻辑,可以开始添加新书了。在页面中展示父组件,当我们在AddBook表单中输入书籍信息并点击“添加”按钮时,表单数据会被打包成一个对象,并通过$emit方法发送给父组件的addBook方法:

<AddBook @add-book="addBook"></AddBook>

在父组件的addBook方法中,我们使用push方法将新书添加到书籍列表中:

addBook(book) {
  // 将新书添加到书籍列表中
  this.bookList.push(book);
},

到这里,我们就成功地实现了图书添加功能。

2.删除图书功能

在vue中实现删除图书功能,需要先创建组件。接下来,我们先来看一个删除图书的示例:

2.1创建组件

我们先在src目录下创建一个名为“BookList.vue”的组件。在这个组件中,我们需要展示书籍列表,并为每本书籍添加一个删除按钮。代码如下:

<template>
  <div>
    <h2>书籍列表</h2>
    <table>
      <thead>
        <tr>
          <th>书籍名称</th>
          <th>书籍作者</th>
          <th>书籍价格</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(book, index) in bookList" v-bind:key="index">
          <td>{{ book.name }}</td>
          <td>{{ book.author }}</td>
          <td>{{ book.price }}</td>
          <td>
            <button @click="deleteBook(index)">删除</button>
          </td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<script>
export default {
  props: {
    bookList: {
      type: Array,
      default: []
    }
  },
  methods: {
    deleteBook(index) {
      // 触发删除书籍事件,将删除的书籍下标传递给父组件
      this.$emit("delete-book", index);
    }
  }
};
</script>

这个组件包含了一个表格,展示了所有的书籍信息。每一行数据后面都有一个删除按钮,当用户点击该按钮时,deleteBook方法会触发删除书籍事件,并将要删除的书籍下标传递给父组件进行处理。

2.2父组件处理方法

由于删除书籍的操作需要在父组件中进行处理,所以我们需要在父组件中定义方法进行处理。代码如下:

<template>
  <div>
    <AddBook @add-book="addBook"></AddBook>
    <BookList :bookList="bookList" @delete-book="deleteBook"></BookList>
  </div>
</template>

<script>
import AddBook from "@/components/AddBook.vue";
import BookList from "@/components/BookList.vue";

export default {
  components: {
    AddBook,
    BookList
  },
  data() {
    return {
      bookList: []
    };
  },
  methods: {
    addBook(book) {
      // 将新书添加到书籍列表中
      this.bookList.push(book);
    },
    deleteBook(index) {
      // 从书籍列表中删除一本书
      this.bookList.splice(index, 1);
    }
  }
};
</script>

在父组件中,我们引入了AddBook和BookList两个组件,其中AddBook组件用于添加书籍,BookList组件用于展示书籍列表。

在父组件中,我们定义了两个方法:addBook方法用于将新书添加到书籍列表中,deleteBook方法用于从书籍列表中删除一本书。

2.3删除书籍

现在我们已经创建了BookList组件和父组件的逻辑,可以开始删除书籍了。在页面中展示父组件,当我们点击BookList组件中的删除按钮时,会触发该组件中的deleteBook方法,并使用$emit方法将该书籍下标传递给父组件的deleteBook方法:

<BookList :bookList="bookList" @delete-book="deleteBook"></BookList>

在父组件的deleteBook方法中,我们使用splice方法从书籍列表中删除一本书籍:

deleteBook(index) {
  // 从书籍列表中删除一本书
  this.bookList.splice(index, 1);
}

到这里,我们就成功地实现了图书删除功能。

总结:本文详细讲解了“vue实现添加与删除图书功能”的完整攻略,通过实例化组件、定义方法和监听事件,成功实现了添加和删除图书的功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue实现添加与删除图书功能 - Python技术站

(0)
上一篇 2023年5月29日
下一篇 2023年5月29日

相关文章

  • Vue.js学习之计算属性

    下面是关于”Vue.js学习之计算属性”的完整攻略。 什么是计算属性 在Vue.js中,我们经常需要根据已经存在的数据,通过一些复杂的逻辑计算出新的值,然后再去渲染页面。 Vue.js提供了计算属性(computed)来方便我们实现这个需求。计算属性本质上是一个方法,它可以接收已经存在的数据为参数,然后根据这些数据进行计算,最终返回一个新的值。 一个计算属性…

    Vue 2023年5月27日
    00
  • Project Reactor 响应式范式编程

    Project Reactor 响应式范式编程 简介 Project Reactor是一款响应式范式编程框架,用于构建基于流(stream)概念的异步、非阻塞、事件驱动的应用程序。它基于Reactive Streams标准,并提供了一系列工具类和API,能够轻松地创建、组合和执行异步流处理操作。在使用Project Reactor编程时,开发人员通过声明式方…

    Vue 2023年5月28日
    00
  • vue3+ts+axios+pinia实现无感刷新方式

    让我来为你详细讲解“vue3+ts+axios+pinia实现无感刷新方式”的完整攻略。 什么是无感刷新? “无感刷新”又称为“局部刷新”,是指在不需要刷新整个页面的情况下,只刷新某个局部区域的内容。这种方式可以提升用户体验,避免因整个页面刷新而导致的卡顿和等待。 准备工作 在开始实现无感刷新之前,需要准备好以下工具和依赖: Vue3:一个流行的JavaSc…

    Vue 2023年5月28日
    00
  • vue 如何将二维数组转化为一维数组

    将二维数组转化为一维数组可以使用 Javascript 的数组方法 flat()。而在 Vue 中,可以使用计算属性来获取转换后的一维数组。 计算属性是一个用来计算 Vue 实例数据的属性,可以基于其它数据进行计算得出。在 Vue 实例中使用计算属性时,只要该计算属性所依赖的数据发生了变化,该计算属性就会重新计算。因此,我们可以使用计算属性来获取每次更新数组…

    Vue 2023年5月28日
    00
  • Vue项目中封装组件的简单步骤记录

    下面是关于“Vue项目中封装组件的简单步骤记录”的完整攻略。 步骤记录 第一步:创建组件文件 在Vue项目中,我们可以在src/components文件夹中创建一个新的组件文件夹,命名遵循大驼峰法则。比如,我们可以创建一个新的组件HelloWorld,那么我们可以在components文件夹中创建一个名为HelloWorld的文件夹。 第二步:编写组件 在新…

    Vue 2023年5月27日
    00
  • vue页面使用多个定时器的方法

    下面是关于Vue页面使用多个定时器的方法的详细攻略: 一、前置知识 在使用Vue页面多个定时器之前,需要掌握以下知识: Vue.js的生命周期钩子函数:created、mounted、updated、destroyed setInterval和clearInterval的用法 二、方法一:使用Vue.js的watch属性 如果在Vue组件中同时使用多个定时器…

    Vue 2023年5月29日
    00
  • 前端Vue项目详解–初始化及导航栏

    下面我来详细讲解“前端Vue项目详解–初始化及导航栏”的完整攻略。 初始化Vue项目 首先我们需要使用Vue脚手架来初始化我们的前端项目。具体步骤如下: 在终端中输入以下命令来安装Vue脚手架: npm install -g @vue/cli 运行以下命令来创建一个新的Vue项目: vue create my-project 其中my-project是你的…

    Vue 2023年5月28日
    00
  • vue插槽slot的简单理解与用法实例分析

    下面是“vue插槽slot的简单理解与用法实例分析”的攻略: 什么是插槽slot? 插槽slot是Vue.js中一个非常重要的概念,它是一种将内容分发到组件中的方式。在Vue.js中,组件是可以复用的,并且每个组件都可以有自己的样式和行为。但是,有时候我们需要在组件中引入其他组件或者HTML元素。这时候,就可以使用插槽slot了。插槽slot可以让我们将一个…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部