当前位置: 首页 > news >正文

Uniapp中使用vue3语法

在setup语法糖中调用uniapp的页面生命周期

<script setup>import { onShow } from "@dcloudio/uni-app"onShow(() => {//hanlder...})
</script>

vue2混入在vue3中建议使用组合式API

新建baseHook.js

import { ref } from "vue";
export function useBaseHook() {//响应式引入界面之后值变化 页面数据也会发生改变const userList = ref([])async function getUserList() {let requestRes = await request({//....})userList.value = requestRes.rows}return {userList,getUserList}
}

页面上使用

<script setup>import {useBaseHook} from '../utils/baseHook.js'let {userList,getUserList} = useBaseHook()
</script>

状态管理Pinia

uniapp教程官网Pinia用法
HBuilder X 已内置了 Pinia,无需手动安装,按照下方示例使用即可。

main.js添加

import App from './App'
import { createSSRApp } from 'vue';
import * as Pinia from 'pinia';export function createApp() {const app = createSSRApp(App);app.use(Pinia.createPinia());return {app,Pinia, // 此处必须将 Pinia 返回};
}

创建一个 Store

// stores/counter.js
import { defineStore } from 'pinia';export const useCounterStore = defineStore('counter', {const count = ref(0);function increment() {count.value++;}return { count, increment };
});

页面使用

<script setup>import { useCounterStore } from '@/stores/counter'const counter = useCounterStore()counter.count++counter.$patch({ count: counter.count + 1 })// 或使用 action 代替counter.increment()
</script>
<template><!-- 直接从 store 中访问 state --><div>Current Count: {{ counter.count }}</div>
</template>

页面跳转、传值在setup语法糖中(vue3)

跳转页

uni.navigateTo({url: "/pages/.../...",success: (e) => {e.eventChannel.emit('infoKey', 任意参数)}
})

接收页面

import { onShow,onLoad } from "@dcloudio/uni-app"
import { getCurrentInstance } from "vue";
const instance = getCurrentInstance().proxy
onLoad(() => {//或者onShow(() => {//在vue2语法中直接this.getOpenerEventChannel(),就能拿到eventChannel //但是在vue3中好像没this的概念 用 getCurrentInstance().proxy代替了const eventChannel = instance.getOpenerEventChannel();eventChannel.on('infoKey', function(data) {console.log('infoKey', data)})
})
http://www.dtcms.com/a/296318.html

相关文章:

  • vue3升级了哪些重要功能
  • vite+vue3 工程-SVG图标配置使用指南——vite-plugin-svg-icons 插件
  • pytest中使用skip跳过某个函数
  • 4.1.2 XmlInclude 在 C# 中的作用及示例
  • 【软件与环境】--SSH连接远程服务器工具:FinalShell
  • C语言:详解文件操作
  • 【Java工程师面试全攻略】Day12:系统安全与高可用设计
  • 嵌入式linux I2C 设备开发调试 使用i2cget 工具失败的问题
  • JavaScript性能优化实战指南:从原理到最佳实践
  • Flink-1.19.0源码详解7-Flink集群端调度
  • 跨境支付入门~国际支付结算(区块链篇)
  • jina-embedding-v4 环境搭建全过程
  • 2025年“创新杯”(原钉钉杯) B题 详细建模思路
  • 牛客网刷题进阶挑战VL25——VL49
  • 【Linux网络编程】传输层协议 - UDP
  • 【数据结构初阶】--二叉树(二)
  • M²IV:面向大型视觉-语言模型中高效且细粒度的多模态上下文学习
  • BI 系统数据看板全解析:让数据可视化驱动业务决策
  • ESP32使用 vscode IDF 创建项目到烧录运行全过程
  • C++学习笔记(八:函数与变量)
  • 云原生架构下的服务器运维挑战与解决方案
  • 【CVPR 2025】即插即用,MobileMamba三阶段架构+Wavelet增强,颠覆轻量模型格局!
  • Qt Quick 3D渲染
  • 云端哨兵的智慧觉醒:Deepoc具身智能如何重塑工业无人机的“火眼金睛”
  • 5种最佳方法将iPhone语音备忘录传输到Mac
  • 清除浮动以及原理
  • 移动管家手机控车便捷性如何
  • 秋招Day18 - MyBatis - 基础
  • tensorflow安装(CPU版本)
  • 爬虫算法原理解析