vue2.0 prop的使用

90 篇文章 14 订阅

个人觉得Prop的使用需要注意四点:


第一点: 使用 DOM 中的模板时,camelCase (驼峰命名法) 的 prop 名需要使用其等价的 kebab-case (短横线分隔命名) 命名

HTML

Vue.component('blog-post', {
  // 在 JavaScript 中是 camelCase 的
  props: ['postTitle'],
  template: '<h3>{{ postTitle }}</h3>'
})

JS

<!--HTML 中是 kebab-case-->
<blog-post post-title="hello!"></blog-post>
第二点:传递静态或动态 Prop

静态: 即表示 字符串,整数等不会改变的值(不需要绑定)

<blog-post title="My journey with Vue"></blog-post>

动态: 即表示 数组,对象等会改变的值(需要绑定)

    <!-- 动态赋予一个变量的值 -->
    <blog-post v-bind:title="post.title"></blog-post>
    
    <!-- 动态赋予一个复杂表达式的值 -->
    <blog-post v-bind:title="post.title + ' by ' + post.author.name"></blog-post>


第三点:单项数据流

所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定:父级 prop 的更新会向下流动到子组件中,但是反过来则不行。这样会防止从子组件意外改变父级组件的状态,从而导致你的应用的数据流向难以理解。
即表示:

  1. 在子组件中任何生命周期都无法获得 prop的值
  2. 在子组件任何methods里面都无法获得 prop的值
  3. 只可以在watch里面对prop进行监听,和相关处理

第四点:Prop 可以进行数据验证

我们可以为组件的 prop 指定验证要求,例如你知道的这些类型。如果有一个需求没有被满足,则 Vue 会在浏览器控制台中警告你。

     props: {
         // 必填的字符串
        propC: {
          type: String,
          required: true
        },
        
          // 带有默认值的数字
        propD: {
          type: Number,
          default: 100
        },
        
        // 多个可能的类型
        BB: [String, Number],
        
        // 没有默认值的对象
        propE: {
          type: Object,
          // 对象或数组默认值必须从一个工厂函数获取
          default: ()=>{}},
        
        // 带有默认值的对象
        propE: {
          type: Object,
          // 对象或数组默认值必须从一个工厂函数获取
          default: function () {
            return { message: 'hello' }
          }
        },
        
        // 自定义验证函数
        propF: {
          validator: function (value) {
            // 这个值必须匹配下列字符串中的一个
            return ['success', 'warning', 'danger'].indexOf(value) !== -1
          }
        }
如何实现表格分页和排序功能? 很高兴回答这个问题!在Vue2.0使用Element UI实现表格分页和排序功能非常简单。首先,我们需要引入Element UI组件和相关的样式文件。然后,在Vue组件的template使用el-table标签来创建表格,同时指定数据的来源和表格列的定义。为了启用分页和排序功能,我们可以在el-table组件上使用属性,例如: :columns="tableColumns" //指定表格列的定义 :data="tableData" //指定数据的来源 :height="tableHeight" //设置表格的高度 :stripe="true" //开启斑马纹 :border="true" //添加表格边框 :pagination="true" //启用分页功能 :page-size="pageSize" //设置每页显示的记录数 :current-page="currentPage" //设置当前页码 :sort-by="sortKey" //设置排序的字段 :sort-order="sortOrder" //设置排序的顺序 在Vue组件的script,我们需要定义tableColumns和tableData变量,分别用来指定表格列的定义和数据的来源。我们还需要定义pageSize、currentPage、sortKey和sortOrder变量,分别用来设置每页显示的记录数、当前页码、排序的字段和排序的顺序。最后,我们可以使用methods选项来定义相关的函数,例如: handleSortChange(column){ if(column.order === "ascending"){ this.sortOrder = "asc"; }else if(column.order === "descending"){ this.sortOrder = "desc"; }else{ this.sortOrder = ""; } this.sortKey = column.prop; this.fetchData(); //重新获取数据 }, handleCurrentChange(currentPage){ this.currentPage = currentPage; this.fetchData(); //重新获取数据 } 以上是一些简单的示例代码,用来演示如何使用Vue2.0和Element UI实现表格分页和排序功能。希望能够对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值