陪诊小程序之uniapp(从入门到精通)

1.uniapp如何使用vue3编写页面

复制代码
<template>
	<view class="content">
		<navbar name="navbar组件"></navbar>
		<image class="logo" src="/static/logo.png"></image>
		<view class="text-area">
			<text class="title">{{title}}</text>
		</view>
		<view class="">
			11111
		</view>
		<button @click="handleClick">点我</button>
		<text>总共购买的水果数量{{totalNum}}</text>
		<my-component></my-component>
		<aComponent></aComponent>
		<navbar></navbar>
		<view v-for="item in list" :key="item.name">
			<view>
				1111
			</view>
			<text>{{item.name}}</text>
			<text>{{item.num}}</text>
		</view>
	</view>
</template>

<script setup>
	import  aComponent  from '../../../project/component/component.vue';
	
	import{ref,reactive,computed} from 'vue'
	import{onLoad} from '@dcloudio/uni-app'
	const title=ref('Hello')
	const list=reactive([
		{name:'apple',num:1},
		{name:'orange',num:2},
		{name:'banana',num:3}
	])
	const handleClick=()=>{
		list.forEach(item=>{
			item.num++
		})
	}
	onLoad(()=>{
		console.log('onLode生命周期')
	})
	const totalNum=computed(()=>{
		return list.reduce((total,cur)=>total+cur.num,0)
	})
</script>

<style>
	.content {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
	}

	.logo {
		height: 200rpx;
		width: 200rpx;
		margin-top: 200rpx;
		margin-left: auto;
		margin-right: auto;
		margin-bottom: 50rpx;
	}

	.text-area {
		display: flex;
		justify-content: center;
	}

	.title {
		font-size: 36rpx;
		color: #8f8f94;
	}
</style>

引入组件的三种方式

全局引入

1.引入

import componentVue from './component/component.vue'

2.全局注册

export function createApp() {

const app = createSSRApp(App)
app.component('my-component',componentVue)

return {

app

}

}

3.页面中引入

<my-component></my-component>

局部引入

<script setup>

import aComponent from '../../../project/component/component.vue';

import{ref,reactive,computed} from 'vue'

import{onLoad} from '@dcloudio/uni-app'

const title=ref('Hello')

const list=reactive([

{name:'apple',num:1},

{name:'orange',num:2},

{name:'banana',num:3}

])

const handleClick=()=>{

list.forEach(item=>{

item.num++

})

}

onLoad(()=>{

console.log('onLode生命周期')

})

const totalNum=computed(()=>{

return list.reduce((total,cur)=>total+cur.num,0)

})

</script>

复制代码
<aComponent></aComponent>

自动引入

新建文件夹然后新建组件

组件引入

复制代码
	<navbar></navbar>

2.uniapp组件通信props和$emit和插槽语法

props

组件

复制代码
<template>
	<view>
		navbar组件
	</view>
</template>

<script setup>
import { defineProps } from 'vue';
defineProps(['name','content'])

</script>

<style>

</style>

组件引入数据

复制代码
<navbar name="navbar组件" :content="data"></navbar>

父组件(页面)向子组件传值,如果没传就用默认值

复制代码
<template>
	<view>
		navbar组件
		<view>组件的name属性{{name}}</view>
		<view>组件的content属性{{content}}</view>
		
	</view>
</template>

<script setup>
import { defineProps } from 'vue';
// defineProps(['name','content'])
defineProps({
name:String,	
	content:{
		type:String,
		default:()=>{
			return '默认值';
		}
	}	
})

</script>

<style>

</style>

$emit

navbar.vue

<template>

<view>

navbar组件

<view>组件的name属性{{name}}</view>
<view>组件的content属性{{content}}</view>

<button @click="handleChange">修改content</button>

</view>

</template>

<script setup>

import { defineProps,defineEmits } from 'vue';

// defineProps('name','content')

defineProps({

name:String,

content:{

type:String,

default:()=>{

return '默认值';

}

}

})
const emit=defineEmits('changeData')
const handleChange=()=>{
emit('changeData','修改后的数据')
}

</script>

<style>

</style>
<navbar :name="navbar组件" :content="data" @changeData="changeData"></navbar>

插槽语法

<navbar :name="navbar组件" :content="data" @changeData="changeData">

<view>我是插槽的内容</view>

</navbar>
<template>

<view>组件</view>

<view>组件的name属性{{name}}</view>

<view>组件的content属性{{content}}</view>

<slot></slot>

<button @click="handleChange">修改content</button>

</template>

<script setup>

import { defineProps,defineEmits } from 'vue';

// defineProps('name','content')

defineProps({

name:String,

content:{

type:String,

default:()=>{

return '默认值';

}

}

})

const emit=defineEmits('changeData')

const handleChange=()=>{

emit('changeData','修改后的数据')

}

</script>

<style>

</style>

相关推荐
mykj15512 小时前
消费积分抵扣物业费小程序商城开发
小程序·积分商城抵扣物业费·积分商城小程序开发
三声三视14 小时前
uni-app 鸿蒙端传参变成 [object Object]?顺着源码追到 ArkTS router 底层才搞明白
人工智能·ai·uni-app·aigc·ai编程·harmonyos
云迈科技-软件定制开发19 小时前
2026年湖南长沙软件定制开发公司怎么选?本地企业做APP、小程序、管理系统的合作参考
小程序
小徐_233321 小时前
Open Wot 1.0.5 发布:让 AI 接入 wot-ui,只需要两条命令
前端·uni-app·ai编程
AI多Agent协作实战派1 天前
AI多Agent协作系统实战(二十二):从6列到12列——任务监控报告的进化之路
java·人工智能·uni-app·bug
小杨小杨、努力变强!1 天前
VS Code运行HBuilder X中的uni-app项目
vscode·uni-app·uni-app run
码兄科技2 天前
实战:基于Spring Boot + UniApp的地理信息小程序开发
spring boot·后端·uni-app
小码哥0682 天前
从三甲综合医院到连锁诊所:医院管理小程序的场景化突围逻辑(陪诊系统-陪诊APP-陪诊小程序)
小程序·医院管理系统·陪诊小程序·陪诊系统·陪诊app
2501_916007472 天前
iOS和macOS应用程序性能分析和优化工具使用综合指南
android·macos·ios·小程序·uni-app·iphone·webview
正在走向自律2 天前
用豆包Seed Evolving打造全功能【AI智能记账】小程序,开源可落地
人工智能·小程序·开源·智能记账