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

作为网站作者,我很愿意为您详细讲解“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中created方法作用

    Vue.js 中的 created() 方法是 Vue 实例生命周期钩子函数之一,用于在 Vue 实例创建并构建完毕后被触发执行。接下来,我将详细介绍 created() 方法的作用和用法。 created() 方法的作用 在 Vue.js 应用中使用 created() 方法通常有以下一些作用: 初始化一些数据,包括组件中的变量,是最常用的 created…

    Vue 2023年5月27日
    00
  • Vue如何用this.$set改变数组里的某个值

    下面是关于“Vue如何用this.$set改变数组里的某个值”的完整攻略: 简介 Vue提供了一些方便的方法来让我们更好地处理数据。在使用 Vue 开发过程中,有时我们需要改变数组某个值时,需要用到 this.$set 方法。 使用方法 直接使用 $set 方法 我们可以直接使用 this.$set 方法来改变数组中的某个值。使用时需要传入三个参数,第一个参…

    Vue 2023年5月29日
    00
  • Vue3 源码解读之副作用函数与依赖收集

    作为Vue3的主要开发者之一,核心团队成员黄轶(尤雨溪)在个人博客上分享了Vue3源码解读系列文章,其中就包括了“副作用函数与依赖收集”这一主题。 以下是该主题的完整攻略: 1. 副作用函数 副作用函数(Effect Function)是Vue3源码中的一个重要概念。在React Hook中有个类似的概念,叫做副作用钩子(Effect Hook),可以用来处…

    Vue 2023年5月27日
    00
  • 基于Vue实现timepicker

    基于Vue实现timepicker的完整攻略如下: 1. 安装依赖 在项目中安装Vue.js和element-ui依赖 npm install vue npm install element-ui 2. 创建组件 创建TimePicker组件并引入element-ui中的TimePicker组件 <template> <div> &l…

    Vue 2023年5月27日
    00
  • vue中使用file-saver导出文件的全过程记录

    下面我将为您详细讲解在Vue中使用file-saver导出文件的全过程记录。 1. 安装file-saver 首先需要安装file-saver依赖库,可以使用npm进行安装: npm install file-saver –save-dev 2. 创建可导出的文件 创建一个用于导出的文件,例如 exportFile.js。在该文件中使用file-saver…

    Vue 2023年5月27日
    00
  • vant使用datetime-picker组件设置maxDate和minDate的坑及解决

    关于“vant使用datetime-picker组件设置maxDate和minDate的坑及解决”的攻略,我整理了如下内容: 问题描述 在使用Vant组件库中的DateTimePicker组件时,需要设置maxDate和minDate参数控制可选范围。但是,这两个参数的设定并不是特别顺利,可能会出现一些问题,例如: 输入的日期不符合要求,仍然可以选择 只有时…

    Vue 2023年5月29日
    00
  • VUEJS实战之修复错误并且美化时间(2)

    让我来为您详细讲解一下“VUEJS实战之修复错误并且美化时间(2)”的完整攻略。 1. 简介 本文是继“VUEJS实战之修复错误并且美化时间(1)”之后,对于时间美化功能的扩展。在上一篇文章中,我们已经完成了将时间戳转换为固定格式的日期字符串。但是,我们发现显示出来的时间还是不够美观,需要进行美化。 2. 时间美化 在Vue.js中,我们可以使用Moment…

    Vue 2023年5月28日
    00
  • vue3使用自定义hooks获取dom元素的问题说明

    下面我将详细讲解 “vue3使用自定义hooks获取dom元素的问题说明” 的完整攻略。 什么是 Vue3 自定义 Hooks? 在 Vue3 中,自定义 Hooks 是一种可以让我们复用常见逻辑的有效方式,这使得我们可以将相同的代码逻辑封装到一个可重复使用的自定义 Hook 中,然后在组件中使用这些自定义 Hooks。自定义 Hooks 可以用于管理 re…

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