vue之provide和inject跨组件传递属性值失败(⽗组件向⼦组件
传值的两种⽅式)
简单介绍:当⼀个⼦组件需要⽤到⽗组件的⽗组件的某些参数。那么这个时候为了避免组件重复传参,使⽤vue的依赖注⼊是个不错的⽅法,直接在最外层组件设置⼀个provide,内部不管多少嵌套都可以直接取到最外层的参数。
provide/inject可实现跨组件传值,数据的流只能是向下传递,其中⽗组件provide,⼦组件inject。provide : 必须在⽗组件进⾏使⽤,⽤来给后代组件注⼊依赖
(属性或⽅法)inject : 必须
在⼦组件进⾏使⽤,⽤来获取根组件定义的要跨组件传递的数据
但是要注意⼀个问题:⽗组件通过provide/inject向⼦组件传递属性值时有可能失败
1、⽗组件通过provide/inject向⼦组件传递⽅法不会有问题
⽗组件:先引⼊⼦组件,再注册⼦组件,provide作为⼀个⽅法给⼦组件注⼊⽅法
merry christmas是什么意思啊<script>
import mappingMmDict from'./mappingMmDict'
export default {
components: {
mappingMmDict
}
provide() {
return {
getMm: Mm
}
}
}
</script>
⼦组件:注⼊属性或⽅法,inject后⾯⽤⼀个数组接收,使⽤属性或⽅法孺子牛什么意思
studenttimes<script>
export default {
inject: ["getMm"],
handleSelect(row) {
...
勇敢英文
增益是什么意思No,this.id);
},2011年高考英语听力
</script>
六级模拟题
2、⽗组件通过provide/inject向⼦组件传递常量也不会有问题
provide() {
return {
"urname": "周⽂豪"
}
}
inject: ["urname"],
<el-form-item label="⽂化程度:">
<el-radio-group v-model="addForm.eduLevel">
<el-radio v-for="item in getEduLevelList()" :key="item.dictTypeId" :label=item.dictId>{{item.dictName+urname}}</el-radio>black and white
</el-radio-group>
</el-form-item>
3、⽗组件通过provide/inject向⼦组件传递从后台获取的数据就⽆法传递,此时只能将数据通过⽅法包装起来实现传递
⽗组件代码如下:
data () {
return {
isMedicareList: []
}
},
methods: {
getIsMedicareList(){
return this.isMedicareList
},
}
provide() {
return {
getIsMedicareList: IsMedicareList
}
}
⼦组件代码:
inject: ["getIsMedicareList"],
<el-form-item label="是否有医保:">
<el-radio-group v-model="addForm.isMedicare">
<el-radio v-for="item in getIsMedicareList()" :key="item.dictId" :label=item.dictId>{{item.dictName}}</el-radio>生日快乐 英文
</el-radio-group>
</el-form-item>
⽗组件向⼦组件传递属性值时建议:通过⽗组件绑定⾃定义属性,然后在⼦组件中通过props来接收的⽅式。⽗组件代码如下:
广交会英语怎么说
<node-addAndEdit ref="addAndEdit" :eduLevelList="eduLevelList" />
⼦组件代码如下:
props: ["eduLevelList"],