vue provider inject,vue provide inject好处和缺点

  vue provider inject,vue provide inject好处和缺点

  本文主要介绍vue提供和注入响应的解决方案,有很好的参考价值,希望对你有所帮助。来和边肖一起看看吧。

  官方网站说提供和注入绑定没有响应。这是故意的。但是,如果您传入一个可监视的对象,它的属性仍然会响应。

  提供:

  Object ()=Object(对象或返回对象的函数)

  注入:

  array {[key:string]:string symbol object }(字符串数组或其键是本地绑定名称的对象)

  要实现父子组件响应,父组件传递的数据类型必须是Object,子组件接收的数据类型必须是Object。其他数据类型不好用。

  provide和inject响应的例子:

  父组件:

  模板

  div class=菜单

  标签:/label的父组件输入框

  输入v-model= level . name @ change= level change(level . name)/

  !-子组件-

  我的清单/我的清单

  /div

  /模板

  脚本

  从“@/pages/user/children/MyList”导入我的列表

  导出默认值{

  组件:{MyList},

  提供(){

  返回{

  用户级别:this.level,

  }

  },

  data(){

  返回{

  级别:{name:初始化 },

  }

  },

  方法:{

  级别更改(val){

  this . user level=this . level;

  Console.log(this.userLevel )//可以打印出对象属性name的值发生了变化。

  }

  }

  }

  /脚本

  子组件(MyList.vue)

  模板

  我的列表

  Pcomponent接收数据:{{userLevel.name}}/p

  父组件输入框:/label input type= text v-model= user level . name

  /div

  /模板

  脚本

  导出默认值{

  //注入:[userLevel],

  注入:{

  用户级别:{

  默认值:()={}

  },

  },

  data(){

  返回{

  }

  }

  }

  /脚本

  输出:

  初始化:

  修改父组件数据:输入框的值为 initial ,子组件也输出 initial

  修改子组件数据:输入框的值为子组件,父组件输入框也显示子组件

  好,提供并注入响应。父组件的数据修改影响子组件的更新,子组件的数据修改也影响父组件的更新。

  数据格式是对象Object的类型,父组件修改数据影响子组件,子组件修改数据影响父组件。感觉和对象的存储有关。对象格式的数据存储的是指针而不是数据,所以父子组件实际上使用的是同一个对象,修改的是同一个对象,所以会实现双向响应变化。不知道是不是理解有问题。

  补充知识:vue监听赋值值以及provide与inject

  当父组件改变子组件的属性时,它不会改变。

  观察:{

   oState: function (val,oldval) {

  this . getorderist({ orderstate:this . getorderstate(this . ostate),pageSize: 1})

  },

  //深度监视器

  丙:{

  处理程序:函数(val,oldVal) { /*.*/},

  深:真的

  },

  },

  $参考文献

  ul class= comment-list v-if= list ref= comment list /ul

  scrollToTop () {

  这个。$refs.commentList.scrollTop=0

  }

  $el

  这个。$ refs . studentlistdialog . $ El . query selector(。El-dialog’)

  vm。$once(事件,回调)

  参数:

  {string}事件

  {函数}回调

  用法:

  侦听自定义事件,但只触发一次。在第一次火灾后移除监听器。

  vm。$ off([事件,回调])

  参数:

  {string Arraystring}事件(仅在2.2.2中支持数组)

  {函数}[回调]

  用法:

  删除自定义事件侦听器。

  如果没有提供参数,则移除所有事件侦听器。

  如果只提供了事件,则移除该事件的所有侦听器。

  如果同时提供了事件和回调,则仅删除该回调的侦听器。

  vm。$destroy()

  用法:

  完全销毁实例。清理它与其他实例的连接,并解除其所有指令和事件侦听器的绑定。

  在销毁和销毁前触发的钩子。

  当vue实例生成后,数据再次赋值时,有时不会自动更新到视图中。

  目标

  arr:[]

  }

  双向绑定后不能直接更改obj.arr。

  您需要添加arr分配或

  这个。$set(this.ruleForm, date ,time)

  vue.set(目标,键,值)

  参数

  {对象数组}目标

  {string number}键

  {任意}值

  这个。$set()与Vue.set()的本质方法相同。前者可以用在方法上。

  当调用set方法时,它可以触发所有页面重新呈现。

  提供:Object ()=Object

  inject:array string {[key:string]:字符串符号对象}

  这一对选项需要一起使用,以允许一个祖先组件向它的所有后代注入一个依赖项,不管组件级别有多深,只要建立了上下游关系,它就会一直生效。如果你熟悉React,这和React的上下文特征非常相似。

  提供选项应该是一个对象或一个返回对象的函数。该对象包含可以注入到其子对象中的属性。您可以使用ES2015符号作为此对象中的键,但它仅在本机支持符号和Reflect.ownKeys的环境中有效.

  inject 选项应该是:

  字符串数组,或者

  一个对象,其键是本地绑定名称,值为:

  用于在可用的注入内容中进行搜索的关键字(字符串或符号),或

  一个对象,该对象的:

  from属性是一个关键字(字符串或符号),用于在可用的注入内容中进行搜索。

  默认属性是降级情况下使用的值。

  提示:提供和注入绑定没有响应。这是故意的。但是,如果您传入一个可监视的对象,它的属性仍然会响应。

  示例:

  //父组件提供“foo”

  var提供商={

  提供:{

  foo:“酒吧”

  },

  //.

  }

  //子组件注入“foo”

  var Child={

  注入:[foo],

  已创建(){

  console.log(this.foo) //=bar

  }

  //.

  }

  以上vue对提供和注入响应问题的解决方案就是边肖分享的全部内容。希望能给你一个参考,多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: