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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。