解决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 相关文章推荐
EXT窗口Window及对话框MessageBox
Jan 27 Javascript
下拉框select的绑定示例
Sep 04 Javascript
手机号码,密码正则验证
Sep 04 Javascript
Js实现网页键盘控制翻页的方法
Oct 30 Javascript
jquery实现键盘左右翻页特效
Apr 30 Javascript
js中最容易被忽视的事件问题大总结
May 15 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
Dec 23 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
Dec 25 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
Jul 21 Javascript
JavaScript读写二进制数据的方法详解
Sep 09 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
Sep 15 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
Nov 03 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判断字符以及字符串的包含方法属性
2008/08/30 PHP
php visitFile()遍历指定文件夹函数
2010/08/21 PHP
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
Symfony的安装和配置方法
2016/03/17 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
一个很简单的办法实现TD的加亮效果.
2006/06/29 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
页面实时更新时间的JS实例代码
2013/12/18 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
JS限制输入框输入的实现代码
2018/07/02 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
从零搭一个自用的前端脚手架的方法步骤
2019/09/23 Javascript
Python将阿拉伯数字转换为罗马数字的方法
2015/07/10 Python
离线安装Pyecharts的步骤以及依赖包流程
2020/04/23 Python
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
python实现分页效果
2017/10/25 Python
django的ORM模型的实现原理
2019/03/04 Python
python3.5 cv2 获取视频特定帧生成jpg图片
2019/08/28 Python
解决Pytorch 加载训练好的模型 遇到的error问题
2020/01/10 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
2020/02/25 Python
python3访问字典里的值实例方法
2020/11/18 Python
纽约的奢华内衣店:Journelle
2016/07/29 全球购物
德国健康生活方式网上商店:Landkaufhaus Mayer
2019/03/12 全球购物
中科创达面试题
2016/12/28 面试题
环境科学专业大学生自荐信格式
2013/09/21 职场文书
五十岁生日宴会答谢词
2014/01/15 职场文书
主管会计岗位职责
2014/03/13 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
高中校园广播稿3篇
2014/09/29 职场文书
《法国号》教学反思
2016/02/22 职场文书
详细了解java监听器和过滤器
2021/07/09 Java/Android