美文网首页
前端扯犊子之五Vue3(二)组件

前端扯犊子之五Vue3(二)组件

作者: wsgdiv | 来源:发表于2021-05-17 07:45 被阅读0次

一、组件

个人理解:为了复用代码而进行封装代码,以及封装代码块之间的通信

1、全局组件

<div id="app">
    <button-counter></button-counter>
</div>

<script>
// 创建一个Vue 应用
const app = Vue.createApp({})

// 定义一个名为 button-counter 的新全局组件
app.component('button-counter', {
  data() {
    return {
      count: 0
    }
  },
  template: `
    <button @click="count++">
      点了 {{ count }} 次!
    </button>`
})
app.mount('#app')
</script>

2、局部组件

<div id="app">
    <runoob-a></runoob-a>
</div>
<script>
var runoobA = {
  template: '<h1>自定义组件!</h1>'
}
 
const app = Vue.createApp({
  components: {
    'runoob-a': runoobA
  }
})
 
app.mount('#app')
</script>

3、组件间通信

(1)、Props
<div id="app">
  <site-name title="Google"></site-namet>
  <site-name title="Runoob"></site-namet>
  <site-name title="Taobao"></site-name>
</div>
 
<script>
const app = Vue.createApp({})
 
app.component('site-name', {
  props: ['title'],
  template: `<h4>{{ title }}</h4>`
})
 
app.mount('#app')
</script>
(2)、动态 Props
<div id="app">
  <site-info
    v-for="site in sites"
    :id="site.id"
    :title="site.title"
  ></site-info>
</div>
 
<script>
const Site = {
  data() {
    return {
      sites: [
        { id: 1, title: 'Google' },
        { id: 2, title: 'Runoob' },
        { id: 3, title: 'Taobao' }
      ]
    }
  }
}
 
const app = Vue.createApp(Site)
 
app.component('site-info', {
  props: ['id','title'],
  template: `<h4>{{ id }} - {{ title }}</h4>`
})
 
app.mount('#app')
</script>
(3)、Props 验证
Vue.component('my-component', {
  props: {
    // 基础的类型检查 (`null` 和 `undefined` 会通过任何类型验证)
    propA: Number,
    // 多个可能的类型
    propB: [String, Number],
    // 必填的字符串
    propC: {
      type: String,
      required: true
    },
    // 带有默认值的数字
    propD: {
      type: Number,
      default: 100
    },
    // 带有默认值的对象
    propE: {
      type: Object,
      // 对象或数组默认值必须从一个工厂函数获取
      default: function () {
        return { message: 'hello' }
      }
    },
    // 自定义验证函数
    propF: {
      validator: function (value) {
        // 这个值必须匹配下列字符串中的一个
        return ['success', 'warning', 'danger'].indexOf(value) !== -1
      }
    }
  }
})

【没写完,改天再写。】

参考链接:
https://www.runoob.com/vue3/vue3-tutorial.html

相关文章

  • 前端扯犊子之五Vue3(二)组件

    一、组件 个人理解:为了复用代码而进行封装代码,以及封装代码块之间的通信 1、全局组件 2、局部组件 3、组件间通...

  • 前端扯犊子之六Vue2(二)组件

    一、组件 个人理解:为了复用代码而进行封装代码,以及封装代码块之间的通信 1、全局组件 注:(1)、table标签...

  • 前端扯犊子之二Ajax

    一、概述 1、作用: 用JavaScript执行异步网络请求。 2、步骤: 1、创建 XMLHttpRequest...

  • 前端扯犊子之十Webpack

    安装:npm使用:配置文件:webpack.config.jsentry:入口模块,类型:字符串、数组、对象mod...

  • 前端扯犊子之九jQuery

    一、概述 1、功能: HTML 元素选取HTML 元素操作CSS 操作HTML 事件函数JavaScript 特效...

  • 前端扯犊子之三Vue3(一)

    一、概述 1、安装: 可npm可cdn可 script 标签本地引入注:filters过滤器已从Vue 3.0中删...

  • 扯犊子

    致未来 别羡慕,去努力。 努力到柳暗花明, 坚持到苦尽甘来。

  • 扯犊子

    嘿!亲爱的小伙伴们。 我自我介绍一下我… 我是66大人,如果你们觉得费劲也可以叫我66、6大或者6人。。 ...

  • 扯犊子

    在一个聊天场景当中,当一个人被三次说到二逼的时候,如果这个人状态好的话,会一笑了之;如果刚好碰到状态不好,会恼羞成...

  • 扯犊子

    “北海有鱼, 其名为鲲, 鲲之大, 一锅炖不下; 化而为鸟 ,其名为鹏, 鹏之大, 两个烤炉 装不下;一个多汤, ...

网友评论

      本文标题:前端扯犊子之五Vue3(二)组件

      本文链接:https://www.haomeiwen.com/subject/pqqndltx.html