vue3网页版常用笔记

一、实现表格树原理(目前只有两级)

二、属性替换为计算属性进行过滤

为了过滤一个列表中的项目 (比如 v-for="user in users" v-if="user.isActive")。在这种情形下,请将 users 替换为一个计算属性 (比如 activeUsers),让其返回过滤后的列表。

data(){
    users:[
        {id:1,isactive:true},
        {id:2,isactive:false},
        {id:3,isactive:true},
    ]
},
computed(){
    activeUsers(){
        return this.users.filter(user=>user.isActive);
    }
}

<div v-for="user in activeUsers" >
 
</div>

三、组件

1、全局组件注册

作用:解决组件多个时,导入组件多个麻烦问题。

install.js如下:

import {
  PugLoading,
  PugTree,
  PugCalendar,
  PugCheckbox,
  PugPage,
  PugRadio,
  PugSelect,
  PugUpload
} from './index'

// 导出组件
export default {
  install: function (app) {
    app.component('PugRadio', PugRadio)
    app.component('PugSelect', PugSelect)
    app.component('PugPage', PugPage)
    app.component('PugCheckbox', PugCheckbox)
    app.component('PugUpload', PugUpload)
    app.component('PugCalendar', PugCalendar)
    app.component('PugTree', PugTree)
    app.component('PugLoading', PugLoading)
  }
}

index.js

export { default as PugPage } from './page/PugPage'
export { default as PugSelect } from './form/PugSelect'
export { default as PugRadio } from './form/PugRadio'
export { default as PugInput } from './form/PugInput'
export { default as PugCheckbox } from './form/PugCheckbox'
export { default as PugUpload } from './upload/PugUpload'
export { default as PugCalendar } from './calendar/PugCalendar'
export { default as PugTree } from './tree/PugTree'
export { default as PugEditor } from './editor/PugEditor'
export { default as PugLoading } from './loading/PugLoading'
export { default as PugPermission } from './permission/PugPermission'

在main.js中进行组件注册

import {createApp} from 'vue'
// 引入自定义组件。index.js是组件的默认入口
import PugUI from './components/install'

const app = createApp(App);
app.use(PugUI);//内部插件 install()
app.mount('#app');

 直接使用

 2、组件的属性自定义-props

从子组件同步数据到父组件

limit限制长度,type="number"输入类型为数字

<template>
  <div class="pug-form-item-control-input">
    <div class="pug-form-item-control-input-content">
				<span class="pug-input-affix-wrapper pro-field pro-field-md">
          <input :placeholder="placeholder" class="pug-input w328" :type="type" :maxlength="limit"/>
        </span>
    </div>
  </div>
</template>

<script>
export default {
  name: "PugInput",
  // 自定义属性
  props:{
    placeholder:{
      type:String,
      default:"请输入..."
    },
    type:{
      type:String,
      default:"text"
    },
    limit:{
      type:Number,
      default: 20
    }
  }

}
</script>

3、组件中数据同步(v-model同步)

从父组件同步数据到子组件

若不处理这个问题,组件的封装毫无意义,

v-model同步主要用于form表单,其他地方很少用到

<pug-input :placeholder="请输入...."  v-model="product.name" type="text"></pug-input>

解决

modelValue,this.$emit('update:modelValue', ev.target.value);

<input :placeholder="placeholder"  @input="toggleValue($event)" 
class="pug-input w328" :type="type" :maxlength="limit"/>

<script>
export default {
  name: "PugInput",
  // 自定义属性
  props: {
    modelValue: {
      type: String
    },
    placeholder: {
      type: String,
      default: "请输入..."
    },
    type: {
      type: String,
      default: "text"
    },
    limit: {
      type: Number,
      default: 20
    }
  },
  data() {
    return {}
  },

  created() {
  },
  methods: {
    toggleValue(ev) {
      // 这个是处理 v-model数据同步
      this.$emit('update:modelValue', ev.target.value);
// 把当前ev.taget.value输入值,更新到你指定v-model属性中modelValue="product.name}

    }
  }

}
</script>

四、实现状态管理复用

 点击状态可进行改变

<td  @click="updateRelation(index,'status')">
     <div :style="{'color':[item.status ==1?'green':'red']}">
         {{ item.status == 1 ? "发布中" : "未发布" }}
     </div>
</td>
<td  @click="updateRelation(index,'isdelete')">
     <div :style="{'color':[item.isdelete ==1?'green':'red']}">
         {{ item.isdelete == 1 ? "删除" : "未删除" }}
     </div>
</td>

可以实现复用 

    updateRelation(index, field) {
      // 状态控制
      const changeVal = this["items"][index][field] == 1 ? 0 : 1;
      // 修改
      const id = this.items[index].id;
      var params = {id: id};
      params[field] = changeVal;
      productService["saveUpdateProduct"](params)["then"](res => {
        if (res.status == 200) {
          this.items[index][field] = changeVal;
        }
      })
    },

五、注意返回类型

当res成功返回时,可能出现返回的是字符串的情况,如下

"{"id":1}"

此时取数据就要转为json格式

var res=JSON.parse(response.data)

判断返回的类型可以用typeof

typeof res.data

六、@click、@blur、@input

@click

@click.stop可以阻止事件冒泡,触发changeBgPic()之后就不会触发下一个事件

<view class="center_top" @click.stop="changeBgPic()" :style="{'background':'url('+userInfo.bgImg+')'}">
	<view class="base">
		<image @click.stop="changeMyFace()" class="profily_header" :src="userInfo.avatar" mode=""></image>
	</view>		
</view>

@blur

元素失去焦点时触发事件

<input class="nickname-input" type="text"  @blur="updateNickname" 
:value="nickname" :model="nickname" placeholder="请填入昵称~" 
maxlength="12" @input="typingContent" />



methods: {
			async updateNickname() {
				var that = this;
				// 获取要更新的用户ID
				var user = app.getUser();
				var userId = user.id;
				// 获取更新的用户名
				var nickname = that.nickname;
				// 组装发送给服务器的参数信息
				var userParams = {
					"userId": userId,
					"nickname": nickname
				};
				
				try{
					var res = await userService.updateUserInfo(userParams);
					if (res.code == 200) {
						// 重置本地用户信息
						user.nickname = nickname;
						// 重新刷到缓存中去
						app.setUser(user);
						// 回退到上一级
						// uni.navigateBack({
						// 	delta: 2,
						// 	animationType: "fade-out"
						// })
						
						uni.reLaunch({
							url:"/pages/me/me",
							animationType: "fade-out"
						})			
					}
				}catch(e){
					uni.showToast({
						title: e.message,
						icon: "none",
						duration: 3000
					});
				}
			}
		}

@input

输入的值发生变化就会触发input

<input class="nickname-input" type="text"  @blur="updateNickname" 
:value="nickname" :model="nickname" placeholder="请填入昵称~" 
maxlength="12" @input="typingContent" />

methods: {
    			typingContent(e) {
				var event = e;
				// 把输入的内容同步到nickname中
				this.nickname = e.detail.value;
				this.wordsLength = this.nickname.length;
			},
		}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值