解决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 相关文章推荐
JavaScript获取客户端计算机硬件及系统等信息的方法
Jan 02 Javascript
js报$ is not a function 的问题的解决方法
Jan 20 Javascript
javascript中加号(+)操作符的一些神奇作用
Jun 06 Javascript
技术男用来对妹子表白的百度首页
Jul 23 Javascript
jQuery中:header选择器用法实例
Dec 29 Javascript
jquery 插件实现瀑布流图片展示实例
Apr 03 Javascript
Highcharts学习之数据列
Aug 03 Javascript
JS 全屏和退出全屏详解及实例代码
Nov 07 Javascript
JS判断两个对象内容是否相等的方法示例
Apr 10 Javascript
微信小程序教程系列之视图层的条件渲染(10)
Apr 19 Javascript
在vue-cli创建的项目中使用sass操作
Aug 10 Javascript
JavaScript实现京东快递单号查询
Nov 30 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导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
php写的AES加密解密类分享
2014/06/20 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
jQuery 跨域访问问题解决方法
2009/12/02 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
2013/12/25 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
2014/12/01 Javascript
node.js中的fs.futimesSync方法使用说明
2014/12/17 Javascript
Javascript中String的常用方法实例分析
2015/06/13 Javascript
整理Javascript数组学习笔记
2015/11/29 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
详解angularjs获取元素以及angular.element()用法
2017/07/25 Javascript
mui框架移动开发初体验详解
2017/10/11 Javascript
vue axios 二次封装的示例代码
2017/12/08 Javascript
React Native 图片查看组件的方法
2018/03/01 Javascript
ES6知识点整理之模块化的应用详解
2019/04/15 Javascript
Vue 动态路由的实现及 Springsecurity 按钮级别的权限控制
2019/09/05 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
python下如何让web元素的生成更简单的分析
2008/07/17 Python
Python itertools模块详解
2015/05/09 Python
Django中ORM表的创建和增删改查方法示例
2017/11/15 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
python scipy卷积运算的实现方法
2019/09/16 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
python 实现音频叠加的示例
2020/10/29 Python
Django用户认证系统如何实现自定义
2020/11/12 Python
CSS3弹性布局内容对齐(justify-content)属性使用详解
2017/07/31 HTML / CSS
Omio俄罗斯:一次搜索公共汽车、火车和飞机的机票
2018/11/17 全球购物
大学自我鉴定范文
2013/12/26 职场文书
写演讲稿所需要注意的4个条件
2014/01/09 职场文书
网络事业创业计划书范文
2014/01/09 职场文书
学生拾金不昧表扬信
2014/01/21 职场文书
工业自动化专业自荐信范文
2014/04/10 职场文书
于丹论语心得观后感
2015/06/15 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python