黑马程序员技术交流社区

标题: 【广州校区】Vue.js的常见问题 [打印本页]

作者: 帅气de路人甲    时间: 2019-9-19 14:40
标题: 【广州校区】Vue.js的常见问题
1、响应式属性和方法
  每个Vue实例都会代理其data对象里所有的属性。
      var data={a:1}
      var vm=new Vue({data:data})   
      vm.a===data.a // -> true  设置属性也会影响到原始数据
      vm.a=2
      data.a        // -> 2     ... 反之亦然
      data.a=3
      vm.a          // -> 3
  即:都可以使vm.xxx这种方式获取和修改实例属性。
  注意:
    只有这些被代理的属性是响应的
    如果在实例创建之后添加新的属性到实例上,它不会触发视图更新
    那么这种情况的话,可以使用VueJs的vm.$xxx的方式来修改实例属性,这同样会触发视图更新,响应式的改变

2、生命周期钩子
  生命周期钩子包括created、beforeCompile、compiled、ready、beforeDestroy、destroyed
  钩子的this指向调用它的Vue实例
  我们可以在钩子的方法中使用this来指代当前实例。
  Vuejs中没有控制器的概念,组件的自定义逻辑可以分割在这些钩子里面

3、插值
  单词插值,只有在第一次渲染时候渲染值,之后不会随实例属性值的变化而改变
  插入原始HTML,这种方式内容以 HTML 字符串插入,数据绑定将被忽略
  如果需要复用模板片断,应当使用partials
  注意:
    在网站上动态渲染任意HTML是非常危险的,因为容易导致XSS攻击

4、v-show 和 v-if的选择
  v-if:
    v-if是惰性的,如果在初始渲染时条件为假,则什么也不做——在条件第一次变为真时才开始局部编译(编译会被缓存起来)
  v-show:
    相比之下,v-show简单得多——元素始终被编译并保留,只是简单地基于css切换

6、prop数据绑定
  prop默认是单向绑定
    当父组件的属性变化时,将传导给子组件,但是反过来不会
    这是为了防止子组件无意修改了父组件的状态——这会让应用的数据流难以理解
  解决办法:
    使用.sync或.once绑定修饰符显式地强制双向或单次绑定
  即:
    1.单向绑定(prop数据默认为单向绑定)
        <child :msg="parentMsg"></child>
    2.双向绑定
        <child :msg.sync="parentMsg"></child>
    3.单次绑定
        <child :msg.once="parentMsg"></child>

7、组件的父链
  子组件可以用this.$parent访问它的父组件
  根实例的后代可以用this.$root访问它
  父组件有一个数组this.$children,包含它所有的子元素






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2