vue 链接方式

本文介绍如何在Vue中使用`router-link`实现动态路由跳转,并确保在页面刷新时query参数不丢失。通过实例演示了如何设置`v-for`遍历菜单,同时传递参数和使用`name`属性的方法,适用于前后端分离项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

query传参 参数在地址栏中显示 刷新不丢失

 <router-link
      v-for="(menu,index) in currentMenuList"
      :key="index"
      :to="{ name: menu.linkName, query: menu.params }"
  >
      <li :class="{ active: show == index }">{{ menu.name }}</li>
  </router-link>

数据

const menuList = reactive([
    { name: 'menu1', link: '/asset/menu1', linkName: 'menu1', params: {}, pid: 'fwtd' },
    { name: 'menu2', link: '/asset/menu2', linkName: 'menu1', params: {}, pid: 'fwtd' },
    { name: 'menu3', link: '/asset/menu3', linkName: 'menu1', params: {}, pid: 'fwtd' },
    { name: 'menu4', link: '/asset/menu4', linkName: 'menu1', params: {SJDM:'SZ0008' }, pid: 'other' },
    { name: 'menu5', link: '/asset/menu4', linkName: 'menu1', params: {SJDM:'SZ0015'}, pid: 'other' }, 
])

params传参
刷新页面参数丢失

<router-link :to="{ name: 'menu1', params: { type: 0 } }">
    <li>1111</li>
  </router-link>

直接写路径的方式

<router-link to="/pmenu/menu">
  <li>menu</li>
</router-link>

name方式

<router-link :to="{ name: 'menuName', query: { P: '1111' } }">
  <li>menu</li>
</router-link>
### Vue.js 与上位机通信的方法 #### 使用 WebSocket 实现实时双向通信 WebSocket 提供了一种在客户端和服务端之间进行全双工通信的方式。当 Websocket 没有连接成功或中断时,可以通过 `ws.onclose` 事件重新建立连接以实现自动重连功能[^1]。 对于 Vue 应用来说,可以在创建实例时初始化 WebSocket 连接: ```javascript new Vue({ el: '#app', data() { return { socket: null, message: '' } }, created() { this.initWebSocket(); }, methods: { initWebSocket() { const ws = new WebSocket('ws://your-upstream-server-address'); ws.onopen = () => console.log('Connected to server'); ws.onerror = (error) => console.error(`WebSocket error observed: ${error}`); ws.onmessage = ({data}) => this.message = JSON.parse(data); ws.onclose = () => setTimeout(() => this.initWebSocket(), 3000); this.socket = ws; }, sendMessage(msg){ if(this.socket.readyState === WebSocket.OPEN){ this.socket.send(JSON.stringify(msg)); }else{ console.warn('Socket is not open, cannot send message.'); } } } }); ``` 此代码片段展示了如何设置一个简单的 WebSocket 客户端并处理消息接收以及发送操作。每当尝试打开一个新的 WebSocket 链接失败后会等待三秒再试一次直到成功为止。 #### 利用 MQTT 协议构建稳定可靠的通讯机制 另一种更高效的选择是采用 MQTT 协议来进行数据交换。MQTT 是一种轻量级的消息队列遥测传输协议,非常适合用于物联网环境下的低带宽网络条件。其工作原理基于发布/订阅模型,允许多个设备之间的松耦合互动[^2]。 为了使 Vue.js 能够方便地集成 MQTT 功能,推荐使用像 `mqtt.js` 或者其他类似的库来简化开发过程。下面是一个基本的例子说明怎样利用这些工具快速搭建起一套完整的解决方案: 安装依赖项: ```bash npm install --save mqtt vue-mqtt ``` 配置插件并在项目入口文件(main.js)引入: ```javascript import Vue from 'vue'; import App from './App.vue'; import Mqtt from 'vue-mqtt'; Vue.config.productionTip = false; // 初始化 mqtt 插件 Vue.use(Mqtt,{ url:'wss://broker.emqx.io:8084/mqtt', // 替换成实际使用的 broker 地址 }); new Vue({ render:h=>h(App), }).$mount('#app') ``` 组件内部可以直接访问 `$mqtt` 对象从而轻松完成主题订阅和消息推送等功能: ```html <template> <div id="example"> <p>{{ message }}</p> </div> </template> <script> export default { name:"ExampleComponent", mounted(){ let topic="/test/topic"; // 订阅指定的主题 this.$mqtt.subscribe(topic,(err)=>{ if(!err){ console.log("Subscribed!"); } }); // 接收来自该主题的信息 this.$on("$mqtt/message",(topic,message)=>{ this.message=message.toString(); }); }, methods:{ publishMsg(){ var msg='Hello World!'; // 向特定主题广播一条新信息 this.$mqtt.publish('/test/topic',msg); } } }; </script> ``` 上述例子中定义了一个名为 ExampleComponent 的单文件组件,它能够监听某个具体的话题并将收到的数据展示出来;同时也提供了向同一话题内发送自定义内容的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值