获取DOM元素
<template>
<div class="home">
<!-- ref属性获取DOM元素-->
<h2 :ref="getH2">获取DOM元素</h2>
</div>
</template>
<script>
// @ is an alias to /src
export default {
name: "HomeView",
components: {},
setup() {
// 获取DOM元素
let getH2 = (el) => {
// el就是获得的DOM元素
console.log(el);
// 修改样式
el.style.color = "red";
};
return {
getH2,
};
},
};
</script>
父子组件之间传值
父传子
父组件中
<template>
<div class="">
<!-- 父传子 -->
<h2>父组件--{{ msg }}--父亲的钱:{{ money }}</h2>
<!-- 1.向子组件传值 在父组件内绑定自定义属性-->
<SonPage :money="money"></SonPage>
</div>
</template>
<script >
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》';
import SonPage from "@/components/SonPage.vue";
import { reactive, ref, toRefs } from "vue";
export default {
//import引入的组件需要注入到对象中才能使用
components: {
SonPage,
},
setup() {
//这里存放数据
const data = reactive({});
const data2 = toRefs(data);
//父组件定义的数据
let money = ref(1000);
return {
...data2,
money,
};
},
};
</script>
<style lang="less" scoped>
</style>
子组件中
<template>
<div class="">
<h2>子组件</h2>
<p>父亲传来的数据--钱:--{{ money }}</p>
</div>
</template>
<script >
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》';
import { reactive, toRefs } from "vue";
export default {
//import引入的组件需要注入到对象中才能使用
components: {},
// 需要用prop来进行接收
props: {
money: {
type: Number,
default: 0,
},
},
// 接收父亲传过来的数据
setup(props) {
// props是父组件传递过来的数据
console.log(props);
//这里存放数据
const data = reactive({});
const data2 = toRefs(data);
return {
...data2,
sendDataToFather,
};
},
};
</script>
<style lang="less" scoped>
</style>
子传父
子组件
<template>
<div class="">
<h2>子组件</h2>
<button @click="sendDataToFather">点击向父组件传值</button>
</div>
</template>
<script >
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》';
import { reactive, toRefs } from "vue";
export default {
//import引入的组件需要注入到对象中才能使用
components: {},
setup(props, { emit }) {
// emit是子组件用来传递给父组件的方法
//这里存放数据
const data = reactive({});
const data2 = toRefs(data);
let sendDataToFather = () => {
// 向父组件进行传值
// emit("自定义事件名",数据)
let message = "Hello Dad!";
emit("toFather", message);
};
return {
...data2,
sendDataToFather,
};
},
};
</script>
<style lang="less" scoped>
</style>
父组件:
<template>
<div class="">
<!-- 接收子组件传递的数据 -->
<SonPage @toFather="dataFromSon"></SonPage>
<p>从子组件传递的值:--{{ sondata }}</p>
</div>
</template>
<script >
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》';
import SonPage from "@/components/SonPage.vue";
import { reactive, ref, toRefs } from "vue";
export default {
//import引入的组件需要注入到对象中才能使用
components: {
SonPage,
},
setup() {
//这里存放数据
const data = reactive({
sondata: "",
});
const data2 = toRefs(data);
// 接收子组件传递的数据
let dataFromSon = (result) => {
//result就是子组件传来的数据
console.log(result);
data.sondata = result;
};
return {
...data2,
dataFromSon,
};
},
};
</script>
<style lang="less" scoped>
</style>
provide()和inject()
//实现父套子,子套孙,父组件和后代组件之间的数据共享
祖先组件:
<template>
<div class="">
<h2>共享给后代的数据:{{ money }}</h2>
<GrandSon></GrandSon>
</div>
</template>
<script >
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》';
import { provide, reactive, ref, toRefs } from "vue";
import GrandSon from "@/components/GrandSon.vue";
export default {
//import引入的组件需要注入到对象中才能使用
components: { GrandSon },
setup() {
//这里存放数据
const data = reactive({});
const data2 = toRefs(data);
// 定义数据
let money = ref(1000);
// provide("属性",数据)--向后代组件提供数据
//适用于父--》子--》孙嵌套共享数据
provide("money", money);
return {
...data2,
money,
};
},
};
</script>
<style lang="less" scoped>
</style>
后代组件中:
<template>
<div class="">
<h2>孙组件</h2>
<p>孙组件共享父组件的值--{{ money }}</p>
</div>
</template>
<script >
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》';
import { inject, reactive, toRefs } from "vue";
export default {
//import引入的组件需要注入到对象中才能使用
components: {},
setup() {
//这里存放数据
const data = reactive({});
const data2 = toRefs(data);
// 接收祖先组件共享的数据
//inject("祖先组件provide的属性")
let money = inject("money");
return {
...data2,
money,
};
},
};
</script>
<style lang="less" scoped>
</style>
Echarts的使用
<!-- -->
<template>
<div class="">
<!--
echarts的使用:
1.下载模块
cnpm install echarts --save
2.根据官方文档引入
import * as echarts from "echarts";
3.在methods中封装fn(){}将官方的API代码CV
4.在Html中用一个盒子接收,设置宽高,修改fn()中byID的id
-->
<h2>echarts</h2>
<!-- 基础柱状图 -->
<div id="main" style="width: 600px; height: 300px"></div>
<!-- 折线图 -->
<div id="main2" style="width: 600px; height: 300px"></div>
<!-- 3D地球 -->
<div id="earch" style="width: 100%; height: 800px"></div>
</div>
</template>
<script>
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》';
import * as echarts from "echarts";
import "echarts-gl";
export default {
//import引入的组件需要注入到对象中才能使用
components: {},
data() {
//这里存放数据
return {};
},
//计算属性 类似于data概念
computed: {},
//监控data中的数据变化
watch: {},
//方法集合
methods: {
// 基础柱状图
fn() {
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById("main"));
// 绘制图表
myChart.setOption({
title: {
text: "ECharts 入门示例",
},
tooltip: {},
xAxis: {
data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"],
},
yAxis: {},
series: [
{
name: "销量",
type: "bar",
data: [5, 20, 36, 10, 10, 20],
},
],
});
},
//折线图
fn2() {
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById("main2"));
// 绘制图表
myChart.setOption({
xAxis: {
type: "category",
data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
},
yAxis: {
type: "value",
},
series: [
{
data: [150, 230, 224, 218, 135, 147, 260],
type: "line",
},
],
});
},
// 3D地球
fn3() {
var ROOT_PATH =
"https://fastly.jsdelivr.net/gh/apache/echarts-website@asf-site/examples";
var chartDom = document.getElementById("earch");
var myChart = echarts.init(chartDom);
var option;
option = {
backgroundColor: "#000",
globe: {
baseTexture: ROOT_PATH + "/data-gl/asset/world.topo.bathy.200401.jpg",
heightTexture:
ROOT_PATH + "/data-gl/asset/world.topo.bathy.200401.jpg",
displacementScale: 0.04,
shading: "realistic",
environment: ROOT_PATH + "/data-gl/asset/starfield.jpg",
realisticMaterial: {
roughness: 0.9,
},
postEffect: {
enable: true,
},
light: {
main: {
intensity: 5,
shadow: true,
},
ambientCubemap: {
texture: ROOT_PATH + "/data-gl/asset/pisa.hdr",
diffuseIntensity: 0.2,
},
},
},
};
option && myChart.setOption(option);
},
},
beforeCreate() {}, //生命周期 - 创建之前
//生命周期 - 创建完成(可以访问当前this实例)
created() {},
beforeMount() {}, //生命周期 - 挂载之前
//生命周期 - 挂载完成(可以访问DOM元素)
mounted() {
// 使用fn
this.fn();
this.fn2();
this.fn3();
},
beforeUpdate() {}, //生命周期 - 更新之前
updated() {}, //生命周期 - 更新之后
beforeDestroy() {}, //生命周期 - 销毁之前
destroyed() {}, //生命周期 - 销毁完成
activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
};
</script>
<style>
</style>
笔记