From f868fec5f748f0f44d89c81cb306107714db300d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=98=B1?= <1954960364@qq.com> Date: Sun, 16 Apr 2023 12:51:45 +0000 Subject: [PATCH] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 李昱 <1954960364@qq.com> --- .../2023-04-10-v-model.md" | 222 ++++++++++++++ ...1-\344\277\256\351\245\260\347\254\246.md" | 128 ++++++++ ...50\345\222\214\346\250\241\346\235\277.md" | 270 +++++++++++++++++ .../2023-04-14-\347\273\204\344\273\266.md" | 277 ++++++++++++++++++ 4 files changed, 897 insertions(+) create mode 100644 "14\346\235\216\346\230\261/2023-04-10-v-model.md" create mode 100644 "14\346\235\216\346\230\261/2023-04-11-\344\277\256\351\245\260\347\254\246.md" create mode 100644 "14\346\235\216\346\230\261/2023-04-13-\344\276\246\345\220\254\345\231\250\345\222\214\346\250\241\346\235\277.md" create mode 100644 "14\346\235\216\346\230\261/2023-04-14-\347\273\204\344\273\266.md" diff --git "a/14\346\235\216\346\230\261/2023-04-10-v-model.md" "b/14\346\235\216\346\230\261/2023-04-10-v-model.md" new file mode 100644 index 0000000..eb25e0c --- /dev/null +++ "b/14\346\235\216\346\230\261/2023-04-10-v-model.md" @@ -0,0 +1,222 @@ + +# +## 一.v-model + ++ v-model 可以自动将表单输入框的内容同步给 JavaScript 中相应的变量 + ++ v-model 还可以用于各种不同类型的输入,它会根据所使用的元素**自动**使用对应的 DOM 属性和事件组合 + ++ v-model 会忽略任何表单元素上**初始的** value、checked 或 selected attribute。它将始终将当前绑定的 JavaScript 状态视为数据的正确来源。应该在 JavaScript 中使用data 选项来声明该初始值。 + +### 代码: +```html + + + + +``` +# +## 二.绑定 + ++ 文本框: +```html + +``` + ++ 单选框:type中为 radio +```html + 女 + 男 +``` + ++ 复选框:type中为 checkbox +```html + 篮球 + 吃饭 +``` + ++ 下拉框:包在**select 标签**中的**option 标签**,提供一个 **disabled 虚化禁用**掉对应的option 标签选项,可用于下拉框的顶部提示 +```html + + +``` + +# +## 三.代码 +```html + + + + + +``` diff --git "a/14\346\235\216\346\230\261/2023-04-11-\344\277\256\351\245\260\347\254\246.md" "b/14\346\235\216\346\230\261/2023-04-11-\344\277\256\351\245\260\347\254\246.md" new file mode 100644 index 0000000..3251d21 --- /dev/null +++ "b/14\346\235\216\346\230\261/2023-04-11-\344\277\256\351\245\260\347\254\246.md" @@ -0,0 +1,128 @@ +# 表单绑定修饰符和生命周期钩子 + +## 一.表单绑定修饰符 + +### .lazy + ++ 默认情况下,v-model 会在每次 input 事件后实时同步更新数据 (IME 拼字阶段的状态例外也就是输入法打字时例外) + ++ 加 lazy 修饰符来改为在每次 change 事件后更新数据,也就是焦点不在对于的事件上时更新,不实时同步更新 + +```html + + + + + +``` + +### .reim + ++ 默认自动去除用户输入内容的前后两端的空格 +```html + + + + + +``` + +# +## 二. 生命周期钩子 +``` +每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤,在此过程中,它也会运行被称为生命周期钩子的函数,让开发者有机会在特定阶段运行自己的代码。 +``` + +### mounted :在选项式中 ++ mounted 钩子可以用来在创建的所有 DOM 节点和组件完成初始渲染后运行代码 + ++ 周期钩子最常用的是 **mounted**、updated 和 unmounted。 + ++ 有生命周期钩子函数的 this 上下文都会自动指向当前调用它的组件实例。注意:避免用箭头函数来定义生命周期钩子,因为如果这样的话你将无法在函数中通过 this 获取组件实例。 + +```html + + + + + +``` + +### onMounted :在组合式中 + ++ 周期钩子最常用的是 **onMounted**、onUpdated 和 onUnmounted。 + ++ 对 onMounted 的调用**不一定**要放在 setup() 或 + + +``` \ No newline at end of file diff --git "a/14\346\235\216\346\230\261/2023-04-13-\344\276\246\345\220\254\345\231\250\345\222\214\346\250\241\346\235\277.md" "b/14\346\235\216\346\230\261/2023-04-13-\344\276\246\345\220\254\345\231\250\345\222\214\346\250\241\346\235\277.md" new file mode 100644 index 0000000..2b57e77 --- /dev/null +++ "b/14\346\235\216\346\230\261/2023-04-13-\344\276\246\345\220\254\345\231\250\345\222\214\346\250\241\346\235\277.md" @@ -0,0 +1,270 @@ +# 侦听器和模板引用 + +## 一.watch函数 :侦听器 + +### 介绍: + ++ 使用 watch 函数在每次响应式状态发生变化时触发回调函数 + ++ 能直接侦听响应式对象的属性值,需要用一个返回该属性的**函数** +```js +const obj = reactive({ count: 0 }) +// 提供一个 getter 函数 +watch( + () => obj.count, + (count) => { + console.log(`count is: ${count}`) + } +) +``` +### 基础的内容: + ++ 组合式 +```html + + + + +``` + ++ 选项式 +```html + + + +``` + ++ 启动前后端分离,修改的代码 +```js +async function getAll(ctx,next){ + // 随机生成一个整数范围在0~9 + let i=Math.floor(Math.random()*10) + let res; + if(i>5){ + res={ + code:1000, + data:{ + name:'找到北极熊了', + img:'https://img1.baidu.com/it/u=3904465785,574612916&fm=253&fmt=auto&app=138&f=JPEG?w=752&h=500' + }, + msg:'获取成功' + } + }else{ + res={ + code:1000, + data:{ + name:'没找到北极熊', + img:'https://img1.baidu.com/it/u=1067723405,2531657160&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=586' + }, + msg:'获取失败' + } + } + ctx.body=res +} +``` +# +## 二.ref: 模板引用 + +### 介绍 + ++ ref 是一个特殊的 attribute,它允许我们在一个特定的 DOM 元素或子组件实例被挂载后,获得对它的直接引用。 + ++ 只可以在组件挂载后才能访问模板引用。如果你想在模板中的表达式上访问 input,在初次渲染时会是 null。这是因为在初次渲染前这个元素还不存在 + ++ ref 数组并不保证与原始的数组有相同的顺序 + +### 基础的操作 + ++ 组合式 +```html + + + +``` + ++ 选项式 +```html + + + +``` diff --git "a/14\346\235\216\346\230\261/2023-04-14-\347\273\204\344\273\266.md" "b/14\346\235\216\346\230\261/2023-04-14-\347\273\204\344\273\266.md" new file mode 100644 index 0000000..e2a8afe --- /dev/null +++ "b/14\346\235\216\346\230\261/2023-04-14-\347\273\204\344\273\266.md" @@ -0,0 +1,277 @@ + +# +## 一.组件的使用 :两种是因为API的不同,所有写法不同 + ++ 组合式(组合式的API) +```html + + + + +``` + ++ 选项式(选项式式的API): + + + 要将导入的组件暴露给模板,我们需要在 components 选项上注册它。 + + + 这个组件将会以其注册时的名字作为模板中的标签名。 + +```html + + + + +``` + +### 传递 props + ++ Props 是一种特别的 attributes,你可以在组件上声明注册。 + ++ defineProps :组合式 + + + HelloWorld.vue + ```html + + + + ``` + + + App.vue + ```html + + + + ``` ++ props: 选项式: + + + 当一个值被传递给 prop 时,它将成为该组件实例上的一个属性。该属性的值可以像其他组件属性一样,在模板和组件的 this 上下文中访问。 + + + 一个组件可以有任意多的 props,默认情况下,所有 prop 都接受任意类型的值。 + ++ 代码 + + + DefineProps.vue + ```html + + + + ``` + + + App.vue + ```html + + + + + ``` + +# +## 二.监听事件 + ++ 调用内置的 $emit 方法,通过传入事件名称来抛出一个事件 + +```html + + +``` + +### 选项式 + ++ 通过 emits 选项来声明需要抛出的事件 + +```html + + + + + + + + + +``` + +### 组合式 + ++ 通过 defineEmits 宏来声明需要抛出的事件 + +```html + + + + + + + + + + + + + +``` + +## 三. 元素 :通过插槽输入内容 + ++ 元素来实现向组件传递内容 + ++ 使用 作为一个占位符,父组件传递进来的内容就会渲染在这里 + +```html + + + + + + + +``` -- Gitee