博主:DongJiang
码龄:7年
等级:LV.22级
内容:316
今日访问:2312
访问总量:5936
博客简介:学习与分享
博客创建时间:2018-04-12
博客主页 立即前往
赞助位
成为赞助商

开发笔记

0

Vue3父组件与子组件双向数据传值展示和修改

标签:组件

子组件中通过computed计算属性监测到值变化后,向父组件发送消息并更改父组件值

const value: any = computed({
      get: () => props.content,
      set: (val) => context.emit('update:content', val)
});
分类: 东江哥 2023-06-23
0

使用Vue3开发的图片上传和裁剪作为用户头像背景功能

上传背景图片并拖拽调整图片,找到适合部分然后裁剪作为个人用户头像背景图。

    // 拖拽图片
    function onmousedown(ev: any) {
      ev.preventDefault()
      let oevent = ev || event
      let distanceX = oevent.clientX //鼠标点击位置
      let distanceY = oevent.clientY //鼠标点击位置
      //dX和dY是鼠标在pic内的相对位置
      //在移动后,设置图片的外边距,利用负外边距移动图片
      ...
分类: 东江哥 2023-06-25
0

不请求后端前端实现分页功能

标签:分页

1、声明页数和页码

let page=1 let size=10 let dataList []

2、通过数组slice方法截取

dataList.slict((page-1)*size, (page-1)*size size)

起始位置:(page-1)*size

终止位置: (page-1)*size size)

根据数组索引位置截取来实现翻页效果

当page=1截取的位置是0到9

当page=2截取的位置是10到19

当page=3截取的位置是20到29

分类: 秋林 2023-06-26
0

vue代码中v-show和v-if指令能否共同使用

标签:vue指令

v-show指令是操作css样式display属性,用来控制DOM元素显示和隐藏。

v-if指令是对页面上DOM节点的添加与删除

从效果上来看是一样,都是设置DOM元素的展示隐藏。但是它们的性质是不一样,一个是设置display属性值,一个是操作DOM元素添加和删除。它们之间可以同时使用是没有冲突。

<!-- v-if指令 -->
<div v-if="status"></div>

<!-- v-if指令 -->
<div v-show="show"></div>

<!-- v-if和v-show指令 -->
<div v-if="status" v-show="show"></div>
分类: 秋林 2023-07-02
0

指令v-if和v-for的使用注意事项

标签:

1、提示:指令v-if和v-for不能用在同一个标签上,否则性能会消耗很大。

2、原因:如果写在同一标签,会先对所有数据进行以下操作,就是一边循环一边执行v-if,循环中多次对 DOM 元素进行添加或删除,这样会造成大量的性能消耗

3、优先级:v-for 优先级 高于v-if

  <div v-for="(item, index) in dataList" :key="index">
    <div v-if="item.status">
      {{item.name}}
    </div>
  </div>

4、解决办法

1.不要把v-for和v-if 写在同一个标签上,而是新建div引入v-for包裹v-if

2.使用v-show代替v-if

分类: 秋林 2023-07-02
0

vue组件中data为什么不是一个对象?

标签:vue组件

在 Vue 中,data 选项在组件中通常被定义为一个函数,而不是一个对象。主要是因为组件被多次引用,每个组件实例都需要有自己独立的数据状态。

如果你将 data 定义为一个对象,那么所有的组件实例将共享同一个对象引用,这会导致它们之间的数据状态相互干扰。

通过将 data 定义为一个函数,Vue 可以确保每次创建新的组件实例时都会调用这个函数,从而返回一个新的数据对象。这样,每个组件实例都会有自己独立的数据状态

分类: 东江哥 2024-05-15
0

vue指令v-model的原理如何实现?

标签:指令

v-model原理:

原生 input 元素若是text/textarea类型,使用 value 属性和 input 事件。

原生 input 元素若是radio/checkbox类型,使用 checked属性和 change 事件。

原生 select 元素,使用 value 属性和 change 事件。

input 元素上使用 v-model 等价于

<input :value="message" @input="message = $event.target.value" />
分类: 东江哥 2024-05-18
0

router-link上事件无效解决方法

标签:

内置组件router-link不生效的原因:router-link会阻止click事件,为决绝这一问题我们在事件绑定上加个native事件修饰符如:

使用@click.native。

.native指直接监听一个原生事件。

分类: 东江哥 2024-05-18
0

vue中常用的修饰符哪些?

标签:

表单修饰符

lazy: 失去焦点后同步信息

trim: 自动过滤首尾空格

number: 输入值转为数值类型

事件修饰符

stop:阻止冒泡

prevent:阻止默认行为

self:仅绑定元素自身触发

once:只触发一次

鼠标按钮修饰符

left:鼠标左键

right:鼠标右键

middle:鼠标中间键

分类: 东江哥 2024-05-18
0

class 与 style 如何动态绑定

标签:

vue组件中class 和 style 可以通过对象语法和数组语法进行动态绑定

对象写法

<template>
<div :class="{ active: isActive }"></div>
<div :style="{ fontSize: fontSize }">
</template>
<script>
export default {
data() {
  return {
    isActive: true,
    fontSize: 30
  }
}
}

数组写法

<template>
<div :class="[activeClass]"></div>
<div :style="[styleFontSize]">
</template>
<script>
export default {
data() {
  return {
    activeClass: 'active',
    styleFontSize: {
      fontSize: '12px'
    }
  }
}
}
</script>
分类: 秋林 2024-05-18