知识vuevue3知识点
Kahvia 样式穿透
使用样式穿透,可以穿透子组件影响到下面的类的样式,做到对第三方组件的样式自定义。
采用>>>
1 2 3 4 5
| uni-data-picker>>>.input-value-border { border: 1px solid black; width: 100px; height: 50px; }
|
采用 /deep/
1 2 3 4 5
| uni-data-picker /deep/ .input-value-border { border: 1px solid red; width: 100px; height: 50px; }
|
采用 ::v-deep
1 2 3 4 5
| uni-data-picker::v-deep .input-value-border { border: 3px solid orange; width: 100px; height: 50px; }
|
父组件获取子组件属性
根据官方文档,采用组合式 api 编写的组件,内部定义的属性、方法,都是不对外开放的。可以调用 defineExpose() 方法,暴露需要的属性和方法。外部通过 ref 进行模板引用,即可访问暴露出来的属性和方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| <template> <uni-popup ref="popPage" type="bottom" background-color="#f7f7f7"> <div class="boxBack"> <div class="box"> <input type="nickname" placeholder="请输入分类名称" v-model="catName"> <button ref="nickBtn" @click="">确认</button> </div> </div> </uni-popup> </template>
<script setup lang="ts"> import { ref } from 'vue';
const popPage = ref(null); const catName = ref("");
function popUp() { console.log(popPage.value); (popPage.value as any).open(); }
defineExpose({ popUp })
</script>
<!-- 弹出层样式 --> <style scoped> </style>
|
props设置默认值
1 2 3 4 5 6 7 8
| let props = defineProps({ title: String, showBack: { type: Boolean, default: true } });
|
watch props的值
要使用 getter 函数。此处的 props.catName 是一个外部传入常量,如果给 watch 这个东西,那么 watch 调用,生成监视的时候,收到的参数是一个常量,这不对。要给 watch 一个getter 函数,让它自己调用函数去看,这样监视器看到返回值跟之前不一样了,才知道发生了变化。
1 2 3 4
| watch(() => props.catName, async (oldCatName, newCatName) => { if ((productsMap.value as any)[props.catName].length == 0) getProsByCatName(); })
|
侦听器 | Vue.js (vuejs.org)