h1的样式:
?运行:控制台打印出H1标签的dom元素,
例如:dom元素中的文本、网页中的位置和样式等
我们获取它的样式给view标签使用,那么$refs.路径,这里样式的路径是p.id所以引入的模版就是这样
运行效果:
刚刚黑色的文字也变成了紫色
? 首先我们需要引入子组件samsung并在子组件中写一些数据和方法以便后面父元素好调用
? 1、引入子组件samsung并获取samsung组件的对象
samsung页面:
运行:
打开控制台我们就能获取到samsung组件中的数据和方法和很多数据
然后我们获取并使用子页面的数据和方法:
运行并打印结果:
点击使用方法:
从而完成父子之间的组件通信。
ref的作用主要是:获取页面的DOM元素(样式、位置、文本等)、获取子组件的对象(也是一种通信方式)
(使用uniapp运行):父页面
<template>
<div class="father">
<h1 ref="p" id="oss">我是父页面</h1><!--获取Dom-->
<!-- <view :id="$refs.p.id">我想使用父页面h1的样式</view> -->
<samsung ref="samsung"></samsung>
<view>获取子组件中的数据:{{$refs.samsung.data}}</view>
<view>
<button @click="next">nexttick</button>
</view>
</div>
</template>
<script>
import SamsungComponent from '@/components/samsung.vue'; // 根据实际路径进行修改
export default {
components: {
'samsung': SamsungComponent,
},
data() {
return {
box: ['项目1', '项目2', '项目3']
}
},
mounted() {
console.log(this.$refs) //获取dom
// console.log(this.$refs.p.innerHTML)
console.log(this.$refs.p.id)
console.log(this.$refs.samsung) //子组件
// console.log(this.$refs.samsung.data) //获取自组件的数据
// console.log(this.$refs.samsung.add(1, 2)) //获取子组件的方法
},
methods: {
next() {
console.log('数据',this.$refs.samsung.add(1,2))
},
// add(num, num1) {
// return num + num1
// }
}
};
</script>
<style>
.father{
width: 500px;
height: 500px;
background-color: antiquewhite;
}
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.logo {
height: 200rpx;
width: 200rpx;
margin-top: 200rpx;
margin-left: auto;
margin-right: auto;
margin-bottom: 50rpx;
}
.text-area {
display: flex;
justify-content: center;
}
.title {
font-size: 36rpx;
color: #942894;
}
#oss {
color: #942894;
}
</style>
子页面:
<template>
<view class="son">
<!--定义ref属性,用来-->
<h3>我是子页面</h3><!--获取DOM-->
</view>
</template>
<script>
export default {
data() {
return {
data: '我是数据'
}
},
methods: {
add(num, num1) {
return num + num1
}
}
}
</script>
<style>
.son{
width: 200px;
height: 200px;
background-color: blue;
}
</style>