解决vue做详情页跳转的时候使用created方法 数据不会更新问题


Posted in Javascript onJuly 24, 2020

大家在做项目的时候肯定会遇到携带某个参数跳转到详情页 然后取这个参数,下面是重点

刚开始我用cookie把这个参数存起来在详情页面取这个参数发现只有第一次取到的是正确的 你在回到父页面在点击进详情页发现取到的数据跟原来的一模一样根本没有发生改变(因为router跳转时是不会刷新页面的所以导致我取得值永远不能更新),我以为是cookie有问题了后来又用了query携带参数跳转,sessionStorage方法存取发现都不行,

看下图解决办法

解决vue做详情页跳转的时候使用created方法 数据不会更新问题

解决vue做详情页跳转的时候使用created方法 数据不会更新问题

我也不知道其中是什么原理 没搞明白 但是解决了问题了,看了文档还是没理解这两个方法具体区别。

补充知识:vue中子组件的created、mounted钩子中获取不到props中的值问题

父子组件通信

这个官网很清楚,也很简单,父组件中使用v-bind绑定传送,子组件使用props接收即可

例如:

父组件中

<template>
  <div>
    <head-top></head-top>
    <section class="data_section">
      <header class="chart-title">数据统计</header>
      <el-row :gutter="20" class="chart-head">
        <el-col :xs="24" :sm="12" :md="6" :lg="6"><div class="grid-content data-head blue-head">统计:</div></el-col>
        <el-col :xs="24" :sm="12" :md="6" :lg="6"><div class="grid-content data-head">销售数量 <span>{{number}}</span></div></el-col>
        <el-col :xs="24" :sm="12" :md="6" :lg="6"><div class="grid-content data-head">销售金额 <span>{{amount}}</span></div></el-col>
        <el-col :xs="24" :sm="12" :md="6" :lg="6"><div class="grid-content data-head">利润统计 <span>{{profits}}</span></div></el-col>
      </el-row>
    </section>
    <chart :chartData="chartData"></chart>
  </div>
</template>

<script>
  data(){
      return {
        number: null,
        amount: null,
        profits: null,
        chartData: [10,10,10]
      }
    },
</script>

子组件中

export default {
  props: ['chartData']
}

这种情况下,子组件的methods中想要取到props中的值,直接使用this.chartData即可

但是有写情况下,你的chartData里面的值并不是固定的,而是动态获取的,这种情况下,你会发现methods中是取不到你的chartData的,或者取到的一直是默认值

比如下面这个情况

父组件中

<script>
  data(){
      return {
        number: null,
        amount: null,
        profits: null,
        chartData: []
      }
    },
    mounted(){
      this.getStatistics();
    },
    methods: {
      //获取统计数据
      getStatistics(){
        console.log('获取统计数据')
        axios.post(api,{

        }).then((res) => {
          this.number = res.data.domain.list[0].number;
          this.amount = res.data.domain.list[0].amount;
          this.profits = res.data.domain.list[0].profits;
          this.chartData = [this.number,this.amount,this.profits];
        }).catch((err) => {
          console.log(err);
        })
      },
    },
</script>

此时子组件的methods中使用this.chartData会发现是不存在的(因为为空了)

这情况我是使用watch处理

解决方法如下:

使用watch

props: ['chartData'],
    data(){
      return {
        cData: []
      }
    },
    watch: {
      chartData: function(newVal,oldVal){
        this.cData = newVal; //newVal即是chartData
        this.drawChart();
      }
    },

监听chartData的值,当它由空转变时就会触发,这时候就能取到了,拿到值后要做的处理方法也需要在watch里面执行!

以上这篇解决vue做详情页跳转的时候使用created方法 数据不会更新问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js返回上一页并刷新的多种实现方法
Feb 26 Javascript
jQuery模拟新浪微博首页滚动效果的方法
Mar 11 Javascript
js实现带按钮的上下滚动效果
May 12 Javascript
javascript实现列表滚动的方法
Jul 30 Javascript
jquery对Json的各种遍历方法总结(必看篇)
Sep 29 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
Dec 06 Javascript
jQuery实现页面顶部下拉广告
Dec 30 Javascript
js canvas实现放大镜查看图片功能
Jun 08 Javascript
Javascript中parseInt的正确使用方式
Oct 17 Javascript
vue-router重定向和路由别名的使用讲解
Jan 19 Javascript
微信小程序从注册账号到上架(图文详解)
Jul 17 Javascript
jQuery zTree树插件的使用教程
Aug 16 jQuery
js实现验证码功能
Jul 24 #Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
Jul 24 #Javascript
深入了解Vue.js 混入(mixins)
Jul 23 #Javascript
JS实现简单移动端鼠标拖拽
Jul 23 #Javascript
JS使用Chrome浏览器实现调试线上代码
Jul 23 #Javascript
JS实现鼠标按下拖拽效果
Jul 23 #Javascript
javascript利用canvas实现鼠标拖拽功能
Jul 23 #Javascript
You might like
php无限分类且支持输出树状图的详细介绍
2013/06/19 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
window.parent调用父框架时 ie跟火狐不兼容问题
2009/07/30 Javascript
用JavaScript对JSON进行模式匹配(Part 1-设计)
2010/07/17 Javascript
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
浅谈Javascript面向对象编程
2011/11/15 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
2013/01/02 Javascript
初识Node.js
2015/03/20 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
JavaScript的词法结构精华篇
2018/10/17 Javascript
如何在微信小程序里面退出小程序的方法
2019/04/28 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
pymongo为mongodb数据库添加索引的方法
2015/05/11 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
2018/02/11 Python
python selenium 对浏览器标签页进行关闭和切换的方法
2018/05/21 Python
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
使用Python 正则匹配两个特定字符之间的字符方法
2018/12/24 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
对Python中画图时候的线类型详解
2019/07/07 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
python的sys.path模块路径添加方式
2020/03/09 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
python 调整图片亮度的示例
2020/12/03 Python
Chantelle仙黛尔内衣美国官网:法国第一品牌内衣
2018/07/26 全球购物
linux下进程间通信的方式
2014/12/23 面试题
环保倡议书格式范文
2014/05/14 职场文书
初中优秀学生评语
2014/12/29 职场文书
2015年房产经纪人工作总结
2015/05/15 职场文书
社团招新宣传语
2015/07/13 职场文书
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python