• vue2知识补充


    1.页面传参及传参之后刷新页面数据丢失

    query参数有多层对象时,刷新丢失可以使用JSON.stringify解决

    params参数丢失:还没试过怎么解决

    1. methods: {
    2. // query和params区别
    3. // query类似 get,跳转之后页面 url后面会拼接参数,类似?id=1,非重要性的可以这样传,密码之类还是用params刷新页面id还在
    4. // params类似 post,跳转之后页面 url后面不会拼接参数 ,但是刷新页面id 会消失
    5. go(){
    6. const data = {
    7. name:'query参数',
    8. id:'348783479283023'
    9. }
    10. // this.$router.push('/route')//直接使用path跳转
    11. // this.$router.push({path:'/route'})//使用path跳转
    12. // this.$router.push({name:'route',query:data})//使用那么跳转并携带参数
    13. this.$router.push({name:'route',query:{
    14. data:JSON.stringify(data),//多层的参数用JSON.stringify转一下可以防止刷新后丢失,接收的页面使用JSON.parse转义一下
    15. date:'2023-11-02'
    16. }})
    17. },
    18. goParams(){
    19. // params传参刷新页面参数会丢失,如果不是一些如密码之类的数据可以使用query,当然丢失问题也有解决办法
    20. const data = {
    21. name:'params参数',
    22. id:'03490303039423'
    23. }
    24. // this.$router.push({name:'route',params:data})
    25. this.$router.push({name:'route',params:{
    26. data:data,
    27. date:'2023-11-02'
    28. }})
    29. }
    30. }

    2.provide跟inject

    二者是用来传递参数的,适用于父组件给后代组件传递参数

    传参页面

    1. export default {
    2. provide:{
    3. //将现需要传递的参数以对象的形式写在provide里面
    4. grandfatherValue:'参数',
    5. fun:()=>{
    6. console.log('函数参数');
    7. }
    8. },
    9. // 在使用 Provide 和 Inject 进行依赖注入时,需要注意以下几点:
    10. // Provide 和 Inject 只能在父子组件之间使用。对于兄弟组件之间的数据共享,建议使用 Vuex 等状态管理工具。
    11. // Provide 和 Inject 注入的数据是响应式的。如果提供的数据发生变化,那么所有注入了该数据的组件都会相应地更新。
    12. // Provide 和 Inject 不保证注入顺序。如果多个组件都提供了同一个键名,注入的顺序不确定,可能会导致组件的渲染结果出现意外情况。
    13. // Provide 和 Inject 不限制嵌套层数。在组件树中,Provide 和 Inject 可以一直循环注入,直到找到对应的数据或方法。
    14. },

    接收参数页面

    1. export default {
    2. name: "",
    3. inject:['grandfatherValue','fun'],//将需要使用的参数以数组的形式列出来,然后在其他地方就能通过this来使用了
    4. //inject:{value:'grandfatherValue'},//也可以是对象写法形式
    5. }

    3.vue作用域插槽的使用v-slot:name= "{data}"、slot-scope="{data}"

    一般用于动态结构中如elementUI中的表格等等 

     父组件

    1. <template>
    2. <div class="page">life组件
    3. <GrandsonCom>
    4. <template slot="one" slot-scope="{data}">
    5. {{'插槽一' + data}}
    6. template>
    7. <template v-slot:two="{data}">
    8. {{'插槽二'+data}}
    9. template>
    10. <template v-slot:three="{data}">
    11. {{'插槽三'+data}}
    12. template>
    13. <template v-slot:four="{data}">
    14. {{'插槽四'+data}}
    15. template>
    16. GrandsonCom>
    17. div>
    18. template>

     子组件

    1. <template>
    2. <div class="page">
    3. <div v-for="(item,index) in list" :key="index" class="box">
    4. <slot :name="item.slot" :data="item.name">slot>
    5. div>
    6. div>
    7. template>
    8. <script>
    9. export default {
    10. name: "",
    11. data() {
    12. return {
    13. list:[
    14. {name:'路飞',id:'232434',slot:'one'},
    15. {name:'索隆',id:'458845',slot:'two'},
    16. {name:'娜美',id:'798989',slot:'three'},
    17. {name:'乌索普',id:'987789',slot:'four'},
    18. ]
    19. };
    20. },
    21. };
    22. script>

  • 相关阅读:
    Haddop访问不了loaclhost9870
    【初阶与进阶C++详解】第三篇:类和对象上(类和this指针)
    【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
    深入了解微前端
    libvirt 使用UEFI 设置 edk2-ovmf
    Docker和Pycharm
    毫无基础的人如何入门 Python ?
    JavaScript 中类的使用(笔记)
    学习ros机器人导航从精读nav2导航launch文件开始
    微信小程序入门---超详细教程
  • 原文地址:https://blog.csdn.net/weixin_52941842/article/details/134185150