vue.js的一个消息组件实例

时间: 2019-01-17阅读: 1027标签: 组件
<template>
  <div v-show="show" :class="`alert alert-${type} alert-dismissible`">
    <button @click="close" type="button" class="close"><span>×</span></button>
    {{ msg }}
  </div>
</template>


v-show 是一个条件渲染指令,它只切换元素 css 属性的 display,这里当 show 值为 true 时,我们就显示该元素。

<script>
export default {
  name: ‘Message‘,
  props: {
    // 是否显示消息框
    show: {
      type: Boolean,
      default: false
    },
    // 消息框的类型
    type: {
      type: String,
      default: ‘success‘
    },
    // 消息
    msg: {
      type: String,
      default: ‘‘
    }
  },
  watch: {
    show(value) {
      if (value) {
        this.$nextTick(() => {
          this.$el.scrollIntoView(true)
        })
      }
    }
  },
  methods: {
    close() {
      this.$emit(‘update:show‘, false)
    }
  }
}
</script>


props 是用来传递数据的,我们需要在子组件用 props 选项声明它预期的数据,上面的代码中我们声明了 3 个属性,并为其指定了 type 类型和 default 默认值,这样我们就能在父组件上传递这些值了,就像下面的代码一样

<Message :show.sync="msgShow" :type="msgType" :msg="msg"/>


type 可以是以下的类型:

  • String
  • Number
  • Boolean
  • Function
  • Object
  • Array
  • Symbol

关于侦听器:

watch: {
  show(value) {
    if (value) {
      this.$nextTick(() => {
        this.$el.scrollIntoView(true)
      })
    }
  }
}


watch 选项提供了一个方法来响应数据的变化,在上面的代码中,我们需要监听 show 的新值 value,完整的传参是 show(val, oldVal),val 是新值,oldVal 是旧值。当新值返回 true 时,我们将当前元素滚动到可视区域的顶部。

关闭事件:

close() {
  this.$emit(‘update:show‘, false)
}


$emit 用于触发当前实例上的事件,其第一个参数是事件名称,后面还可以附加若干参数。当点击关闭按钮时,我们触发一个 ‘update:show‘ 的事件,并附带一个参数 false,用来关闭消息提示。(为什么事件名称是 ‘update:show‘,我们稍后结合 props 进行讲解。)

我们可以在组件模板内使用组件定义的 props,但我们不应该直接修改 props。要在组件内更新 props 选项的 show 值,需要显式地触发一个更新事件:

close() {
  // 可以触发一个事件来更新 show
  this.$emit(‘update:show‘, false)

  // 不可以直接修改 show,这会导致 vue 在控制台发出错误警告
  this.show = false
}

 

props 的绑定默认是单向的,我们要在组件内部更新 show 值,需要在父组件上添加 .sync 修饰符,以创建『双向绑定』:

<Message :show.sync="msgShow"/>


上面的代码会被 vue 扩展为:

<Message :show="msgShow" @update:show="val => msgShow = val" />


因为父组件有 update:show 事件监听,所以我们能在组件内部使用 $emit 来关闭消息提示:

close() {
  this.$emit(‘update:show‘, false)
}
站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/1832

关闭

react-native时间轴组件的使用

最近在写公司的项目,因产品设计需求,需要类似如下的效果,像是一个时间轴。本着不重复造轮子的目标,在最喜欢的github上找寻合适的组件

vue 关于子组件向父组件传值$emit触发无效问题

这样做就会出现一个问题 就是在子组件中,this.$emit触发不了或者延迟,原因是在触发this.$emit请求返回需要时间,而在请求过程(因为是异步所以会先执行下面的操作),调用了this.close(this.close是定义好的方法)将弹窗关闭

Vue中组件

组件:由 template + css + js 三部分组成(.vue文件)1)组件具有复用性2) 复用组件时,数据要隔离3) 复用组件时,方法不需要隔离,因为方法使用隔离数据就可以产生区别

Vue.js组件切换方式

这里,我用一个注册登录两组件的切换实例来演示:这个方式唯一的缺陷就是只能在两个组件之前切换,当要求需要三个及三个以上的组件切换的时候,这就不行了(原因是 flag 只有 true 和 false 两个值)

vue重新渲染组件(重置或者更新)

当数据通过异步操作后,对之前加载的数据进行变更后,发现数据不生效。A组件或者B组件触发数据更新,C组件数据更新了,但是C组件仍显示上一次数据。

可靠React组件设计的7个准则之SRP

我喜欢React组件式开发方式。你可以将复杂的用户界面分割为一个个组件,利用组件的可重用性和抽象的DOM操作。基于组件的开发是高效的:一个复杂的系统是由专门的、易于管理的组件构建的。然而,只有设计良好的组件才能确保组合和复用的好处

BEM举例

一个组件可能有不同状态。状态应该使用修饰符类来实现。不要单独使用修饰符。修饰符的作用是增加而不是替换基类。更复杂的组件含有子元素。在某些情况下,您可能希望更改组件中的单个元素。

16款优秀的Vue UI组件库

iView 是一套基于 Vue.js 的开源 UI 组件库,主要服务于 PC 界面的中后台产品。iView的组件还是比较齐全的,更新也很快,文档写得很详细。有公司团队维护,比较可靠的Vue UI组件框架

Vue父子组件传值(复杂数据类型的值)

vue 父子组件传值是很常见的,多数情况下都是父传递给子的值是基础数据类型,如string,number,boolean,当父组件值被修改时,子组件能够实时的作出改变。如果父子传值的类型是复杂数据类型(object,array)这种时

React组件设计模式-Provider-Consumer

我们都知道,基于props做组件的跨层级数据传递是非常困难并且麻烦的,中间层组件要为了传递数据添加一些无用的props。而React自身早已提供了context API来解决这种问题,但是16.3.0之前官方都建议不要使用

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!