您的位置:首页 > 科技 > 能源 > 网页布局设计方式_邯郸网站建设推广_阜新网络推广_宁波seo在线优化哪家好

网页布局设计方式_邯郸网站建设推广_阜新网络推广_宁波seo在线优化哪家好

2025/3/12 1:12:36 来源:https://blog.csdn.net/hjh15827475896/article/details/146142140  浏览:    关键词:网页布局设计方式_邯郸网站建设推广_阜新网络推广_宁波seo在线优化哪家好
网页布局设计方式_邯郸网站建设推广_阜新网络推广_宁波seo在线优化哪家好

在使用uniapp+vue3开发中, 使用了uni-ui的组件,但是我们也需要自定义组件,比如我要自定一个picker 的组件, 是在 uni-data-picker 组件的基础上进行封装的
父组件中的代码

<classesselect :selectclass="selectclass" :classinfotree="classinfotree"></classesselect>
<script setup>
import classesselect from "./components/classesselect.vue"//班级选项数据
const classinfotree = ref([{text:"摩尔英语1班",value:1
},{text:"摩尔英语2班",value:2
},{text:"摩尔英语3班",value:3
}]);//父组件中记录选中的数据	
const selectclass = ref(3)</script>

如下图:子组件的名称是 classesselect ,代码如下

<template><view class="comwrapper"><view class="typesel"><view class="underline"><uni-data-picker :clear-icon="false" :localdata="classinfotree"    //这里接收你组件传来的 选项数据v-model="classselect"	//这里是选中的数据  **********这里其实就是用错误的了 错误 错误 错误*********></uni-data-picker></view></view></view>
</template>
<script setup>
//班级选择器	
import { ref } from "vue"const props = defineProps(["classinfotree","selectclass"])
</script>

上面的代码就已经出现错误了, 更别说运行了, 因为 子组件的v-model ,直接在子组件中改变了 父组件传来的值 ,这在vue3中是不被允许的

解决办法:我们来先看一下,官网对 v-model的解释
在这里插入图片描述
可以看到, 问题就在 @update:model-value=''newValue => searchText = newValue ",这个代码中,它就相当于在子组件中, 修改了父组件的代码

所以, 我们对 子组件的 v-model 进行还原,并且 改写 update:model-value 的方法就可以了

下面是解决之后的代码
首选, 我们把子组件中的 v-model 的代码还原

同时子组件中实现方法

function handleModelValue (val) {emits('update:modelValue', val)  //触发父组件中的方法, 并把新的子组件中的值传送到父组件中
}

————————————
然后是父组件中的代码
在这里插入图片描述

在这里插入图片描述
通过以上的改写, 就可以正常的封装 uniui中 带有 v-model 的组件了

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com