解决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 相关文章推荐
Iframe thickbox2.0使用的方法
Mar 05 Javascript
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
Jun 28 Javascript
jQuery代码优化 事件委托篇
Nov 01 Javascript
javascript匿名函数应用示例介绍
Mar 07 Javascript
jQuery+PHP星级评分实现方法
Oct 02 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
May 15 Javascript
js 截取或者替换字符串中的数字实现方法
Jun 13 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
Jan 08 Javascript
通过js控制时间,一秒一秒自己动的实例
Oct 25 Javascript
深入解析ES6中的promise
Nov 08 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
Mar 09 Javascript
纯JS开发baguetteBox.js响应式画廊插件
Jun 28 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性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
php实现查看邮件是否已被阅读的方法
2013/12/03 PHP
php判断对象是派生自哪个类的方法
2015/06/20 PHP
js取滚动条的尺寸的函数代码
2011/11/30 Javascript
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
JS控制输入框内字符串长度
2014/05/21 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
省市联动效果的简单实现代码(推荐)
2016/06/06 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
2016/09/14 Javascript
Bootstrap基本组件学习笔记之面板(14)
2016/12/08 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
详解Vue SPA项目优化小记
2018/07/03 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
js实现无缝轮播图特效
2020/05/09 Javascript
JS运算符优先级与表达式示例详解
2020/09/04 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
[01:50]WODOTA制作 DOTA2中文宣传片《HERO》
2013/04/28 DOTA
深入理解Python中的元类(metaclass)
2015/02/14 Python
ubuntu16.04制作vim和python3的开发环境
2018/09/23 Python
pyqt远程批量执行Linux命令程序的方法
2019/02/14 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
python em算法的实现
2020/10/03 Python
推荐一些比较有用的css3新属性
2014/11/11 HTML / CSS
video.js支持m3u8格式直播的实现示例
2020/05/20 HTML / CSS
新西兰珠宝品牌:Michael Hill
2017/09/16 全球购物
Python如何实现单例模式
2016/06/03 面试题
会议欢迎词范文
2015/01/27 职场文书
董事长新年致辞
2015/07/29 职场文书
社区干部培训心得体会
2016/01/06 职场文书
关于html选择框创建占位符的问题
2021/06/09 HTML / CSS
手把手教你实现PyTorch的MNIST数据集
2021/06/28 Python
nginx七层负载均衡配置详解
2022/07/15 Servers