• 十五、ECharts可视化库的使⽤


    1、composion API 的认识

    vue3兼容vue2的写法

    composion API 需要熟练掌握

    2、Mixin 相同的代码逻辑进行抽取

    • Mixin 提供了非常灵活的方式,来分发vue组件中的可复用功能
    • 一个Mixin 对象可以包含任何组件选项
    • 当组件使用Mixin对象时,所有Mixin对象的选项将被 混合 进入该组件本身的选项中

    Mixin 混入demo:

    demoMix.js

    1. export const demoMix = {
    2. data(){
    3. return {
    4. title:"hello mixin"
    5. }
    6. },
    7. created(){
    8. console.log("mixin 执行了")
    9. },
    10. methods:{
    11. foo(){
    12. console.log("foo click")
    13. }
    14. }
    15. }

    3、【合并规则】如果mixin 和当前组件的选项发生了冲突,如何处理?

     4、全局Mixin

    • 全局的Mixin 可以使用 app 的方法 mixin 来完成注册
    • 一旦注册,全局混入的选项将会影响每一个组件

    5、extends 【仅做了解,用的很少】

    类似于 Mixin

    extends demo:

     

    extends 和 mixin 在vue3中用的会越来越少的

    6、composition API

    vue2 是 Options API

    vue3 是 Composition API

    setup() 是真正去编写 Composition API 的地方

    6.1、Options API 的弊端:【可读性差】

    当我们实现一个功能时,这个功能对应的代码逻辑会被拆分到各个属性中

    当我们的组件变得更大,更复杂时,逻辑关注点的列表就会增长,那么同一个功能的逻辑就会被拆分的很分散

    尤其对于那些一开始就没有编写这些组件的人来说,这个组件的代码是难以阅读和理解的(阅读组件的其他人)

    7、Options API的基本使用

    写在setup函数中

    8、setup函数:【setup函数中不能使用this】

    setup 函数实在created前面调用的

    setup 函数里面不能使用this

      函数的参数:

      setup函数有两个参数:

    •   第一个参数: props  【父组件传递过来的属性】
    •   第二个参数: context

      函数的返回值 context 包含三个属性

      attrs: 所有的非 prop 的attribute

      slots: 父组件传递过来的插槽(这个在以render函数返回时会有作用,后面会讲到)

      emit : 组件内部需要发出事件时会用到emit (因为我们不能访问this,所以不可以通过this.$emit发出事件)

    9、setup 的返回值

    可以在模板template中被使用

    也就是说可以通过setup的返回值来代替data选项

     

     setup 返回值的使用:

    10、setup源码的阅读

    runtime-core

    11、响应式api  reactive的使用 

    reactive 的返回值在被使用时会被劫持,会用proxy

    12、ref api

    reactive  对传入的类型有限制,要求必须传入一个对象或者数组类型

    如果传入一个基本数据类型会报警告

    ref会返回一个可变的响应式对象,该对象作为一个响应式的引用,维护着它内部的值,这就是ref名称的来源

    它内部的值是在ref的value属性中被维护的

    13、模板中的解包是浅层解包,reactive可响应式对象,可以解包

    14、readonly 只读的api

    readonly 会返回原生对象的只读代理(也就是它依然还是一个Proxy,这是一个proxy的set方法被劫持,并不能对齐进行修改)

    1. <script>
    2. import { reactive, ref, readonly } from 'vue'
    3. export default {
    4. setup(){
    5. const info1 = {name:"why"};
    6. const readonlyInfo1 = readonly(info1);
    7. const info2 = reactive({
    8. name:"zhangsan"
    9. })
    10. const readonlyInfo2 = readonly(info2);
    11. const info3 = ref("why");
    12. const readonly3 = readonly(info3)
    13. let updateState = ()=>{
    14. // readonly2.name = "yxx"
    15. readonly3.value = "yxx"
    16. }
    17. return {
    18. updateState
    19. }
    20. }
    21. }
    22. script>
    23. <style scoped>
    24. style>

  • 相关阅读:
    elasticsearch6.x 数据的备份
    1 论文笔记:Efficient Trajectory Similarity Computation with ContrastiveLearning
    小白健身心路历程
    数位dp算法leetcode.788
    MySQL—— 用户创建和权限管理
    vue3入门之简介
    数值法求解微分博弈问题(〇)——定义
    Linux 软件包管理器 yum
    Elasticsearch进阶教程:生成离线官方文档
    【接口自动化测试】一步一步教你搭建接口环境
  • 原文地址:https://blog.csdn.net/qq_37299479/article/details/127313735