点赞增加的组件

news/2024/7/10 3:07:55 标签: vue
<div id="app" class="demo">
  <post-list></post-list>
 </div>
  <script src="https://unpkg.com/vue@next"></script>
  <script>
  const app = Vue.createApp({});
  /* 1、什么时候括号包东西,什么时候不包?看没有方法和数据要包
  2、PostListItem  先定义单个贴子的组件,先定义子组件,为什么呢?定义了后面才好用吗?
  */
  const PostListItem = {
    props: {
      /* 接下来有父组件传子组件的情况吗?*/
      post: {
        type: Object,
        default: function() {
          /* 这个习惯用法是干什么的,为什么要用在这里?*/
          return {}
        }
      },
    },
    methods: {
        handleClick() {
          this.$emit("vote")
          /* 传递这个事件,vote,把它传递给父组件,由子组件传,vote是什么呢,子组件里还没有定义吧?一会儿能不能看到是什么情况?*/
        }
      },
     template: `
     <div>
      <h3>标题: {{ post.title }}</h3>
      <p>作者: {{ post.author }} | 发表日期: {{ post.data }} | 点赞数: {{ post.vote }}</p>
      <p><button @click="handleClick">点赞</button></p>
      </div>
     `
    }
    app.component('PostList', {
      data() {
        return {
          posts: [
            {id: 1, title: '《Servlet/JSP深入详解》怎么样', author: '张三', date: '2019-10-21 20:10:15', vote: 0},
            {id: 2, title: '《VC++深入详解》观后感', author: '李四', date: '2019-10-10 09:15:11', vote: 0},
            {id: 3, title: '《Java无难事》怎么样', author: '王五', date: '2020-11-11 15:22:03', vote: 0}
        ]
        }
     },
     components: {
       /* 为什么会有这种单个component出现的情况,为什么要跟在组件定义后面?*/
       PostListItem
     },
     methods: {
       handleVote(id) {
         /*定义handleVote方法
         上面是定义list组件,下面是定义item组件吗?怎么能这么定义组件?是本地注册吗?list那个是全局注册吗?本地注册的模板是怎么样的,忘记了。*/
         this.posts.map(item => {
           item.id === id ? {...item, vote: ++item.vote} : item
           /*这里就超出我的知识范围了*/
         })
       }
     },
     template: `
       <PostListItem 
            v-for = "post in posts"
            :key="post.id"
            :post="post"
            @vote="handleVote(post.id)"/>
     `
    })
app.mount('#app')
    </script>


http://www.niftyadmin.cn/n/957462.html

相关文章

<built-in function imshow> returned NULL without setting an error

cv2.imshow(p, im0) 报错&#xff0c;只需要把p改成str类型就行

default: function() { 这是什么用法

default: function() {/* 这个习惯用法是干什么的&#xff0c;为什么要用在这里&#xff1f;*/return {}}

LabelImg的安装出现No module named ‘libs.resources‘错误

如果出现No module named ‘libs.resources’&#xff0c;直接看第7点。 1.下载labelImg github地址&#xff1a; https://github.com/tzutalin/labelImg “”""""""""""""""""""…

window下python GUI编程(anaconda+python+pyQt5)

前言 anaconda是python的集成环境&#xff0c;而Qt是受许多人欢迎的强大UI编程工具&#xff0c;二者相结合相信会有更多美妙的事情&#xff0c;废话不说l了。。。 环境 window10anaconda3python3.6pyQt5 配置过程 1、安装pyQt5 和 PyQt5-tools 以前只知道anaconda中集成的…

python3 + opencv 调用摄像头录像后保存视频

python3 opencv 调用摄像头录像后保存视频 #!/usr/bin/python3 import cv2## opening videocapture cap cv2.VideoCapture(0, cv2.CAP_DSHOW)## some videowriter props sz (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))fps 30 four…

python中super().__init__()

文章目录 python里的super().__init__()有什么用&#xff1f; 1、从实例中对比 1.1、实例1.2、运行结果与对比1.3、完整代码2、关于继承顺序3、super() 在 python2、3中的区别python里的super().init()有什么用&#xff1f; 对于python里的super().__init__()有什么作用&#…

anaconda手动删除第三方库

1、找到anaconda目录下pkgs文件夹查看是否有要删除的包&#xff0c;如果有则直接删除 2、找到/lib/python3.6/site_packages (因为我的anaconda是python3.6版本)&#xff0c;查看此文件夹里是否包含要删除的包&#xff0c;如果有直接删除 3、在anaconda目录下找到conda-meta文…