解决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 相关文章推荐
jquery之Document元素选择器篇
Aug 14 Javascript
由JavaScript技术实现的web小游戏(不含网游)
Jun 12 Javascript
javascript之典型高阶函数应用介绍
Jan 10 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
Jun 09 Javascript
判断日期是否能跨月查询的js代码
Jul 25 Javascript
JS实现控制表格内指定单元格内容对齐的方法
Mar 30 Javascript
jQuery实现不断闪烁文字的方法
May 15 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
May 13 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
Jul 01 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
Apr 08 jQuery
extjs简介_动力节点Java学院整理
Jul 17 Javascript
微信小程序 轮播图实现原理及优化详解
Sep 29 Javascript
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连接Oracle for NT 远程数据库
2006/10/09 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
php实现的简单日志写入函数
2015/03/31 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
浅谈javascript的数据类型检测
2010/07/10 Javascript
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
js控制多图左右滚动切换效果代码分享
2015/08/26 Javascript
javascript跨域总结之window.name实现的跨域数据传输
2015/11/01 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
微信小程序 刷新上拉下拉不会断详细介绍
2017/05/11 Javascript
layui文件上传实现代码
2017/05/20 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
[57:36]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第三场 2月1日
2021/03/11 DOTA
跟老齐学Python之Python安装
2014/09/12 Python
Python中map,reduce,filter和sorted函数的使用方法
2015/08/17 Python
python中PIL安装简单教程
2016/04/21 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
Sanic框架Cookies操作示例
2018/07/17 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
Python实现像awk一样分割字符串
2020/09/15 Python
Html5 实现微信分享及自定义内容的流程
2019/08/20 HTML / CSS
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
c/c++某大公司的两道笔试题
2014/02/02 面试题
我能否用void** 指针作为参数, 使函数按引用接受一般指针
2013/02/16 面试题
新闻专业推荐信范文
2013/11/20 职场文书
最新奶茶店创业计划书范文
2014/02/08 职场文书
优秀技术工人先进材料
2014/02/17 职场文书
社会公德演讲稿
2014/05/20 职场文书
总经理助理岗位职责范本
2014/07/20 职场文书
部队2014年终工作总结
2014/11/27 职场文书
走进毛泽东观后感
2015/06/04 职场文书
高三数学教学反思
2016/02/18 职场文书
拒绝盗图!教你怎么用python给图片加水印
2021/06/04 Python