vue加载后不变原理

一、随机

在开发阶段,如下

javascript 复制代码
export const mock = {
 moth: Math.ceil(Math.random() * 10)
}

使用mock

javascript 复制代码
import { mock } from "@/help/index.js";

getDate() {
 console.log(mock)
}

发现执行getDate()得到的mock一直是加载初次的随机数,并未随机,这是因为加载中已经执行mock数据已经固定,再使用就不能改变,只能用初次加载的数据,

可见vue执行js后,如果非方法会执行一次,后面直接使用,并不执行js了,但是需要的是每次使用执行其随机的数,改变其数据

解决方案,改mock为方法去调用,就每次执行方法得到最新随机数,和接口请求一个原理

javascript 复制代码
export const mock = () => {
  return {
     moth: Math.ceil(Math.random() * 10)
    }
}

//调用
import { mock } from "@/help/index.js";
getDate() {
 console.log(mock())
}

二、provide

在开发阶段,如下

javascript 复制代码
provide() {
   return {
     getMockList: this.getMock,
   };
},
methods: {
    set() {
      this.getMock = Math.ceil(Math.random() * 10)
    }
}

执行set()后子组件通过inject调用

javascript 复制代码
inject: ["getDataInit"],
mounted() {
    console.log(this.getDataInit)
},

发下getDataInit并未变

可见vue执行provide后,如果非方法会执行一次,后面直接使用,并不执行provide了,但是需要的是每次使用执行其随机的数,改变其数据

解决方案,改provide为方法去调用,就每次执行方法得到最新随机数,子组件需要通过computed接受或者调用方法

javascript 复制代码
provide() {
    return {
      getMockList: () => this.getMock,
    };
 },

//子组件通过computed接受或者直接调用方法
computed: {
    getMock() {
      return this.getMockList();
    },
},
相关推荐
weedsfly10 分钟前
Cookie 安全三属性:HttpOnly、Secure、SameSite 分别防什么?
前端·javascript·面试
旖-旎10 分钟前
QT界面优化(6)
开发语言·c++·qt
AI科技星10 分钟前
基于超复数广义分形流形的电磁耦合与缪子反常磁矩几何理论
开发语言·平面·重构·概率论·量子计算·乖乖数学·全域数学
组合缺一16 分钟前
用 ChatModel 构建 LLM 驱动的 Java 应用
java·开发语言·ai·llm·solon·rag
前端炒粉28 分钟前
马克思主义基本原理在Vue框架中的指导作用探析
前端·javascript·vue.js
零点零一30 分钟前
QT 5升级到 Qt 6 使用 Clazy 检查将 C++ 应用程序移植到 Qt 6
开发语言·c++·qt
caimouse36 分钟前
reactos 测试安装32位微信失败的日志
开发语言·微信
爱奥尼欧40 分钟前
轻量级可扩展日志框架-异步日志与系统集成
开发语言·数据库·c++·学习
happyprince41 分钟前
12-vLLM 量化方案全面分析
前端·javascript·vllm
必胜刻41 分钟前
从零搭建全栈博客系统:Go + Vue 3 + Docker 全流程实战
vue.js·docker·golang