vue
Vue
迷茫,现在不知道写什么项目,做个知识总结吧
基础用法尽量概括一下
vue的目录结构就不说了,
组合式 script template style
碎碎念知识点 从vue官方文档写 缩略概况
文本插值 {{message}}
v-html = “html” html插入
属性 v-bind:id 简写 :id 自定义属性
一个可以有一个自定义和一个静态的,动态的优先级高于静态
但是下面代码
<div id="111" :id="222"></div> |
:disabled=”true or false” //写函数 按钮是否显现判断 script写逻辑
动态绑定多个值
const object ={ |
支持单一表达式{{}}
v-if v-else v-for
v-for 和v-if不能放在一个标签上
vue3v-if优先级大于v-for 会先进行v-if判断
v-for 需要加key 为了diff算法管理
:Arguments :href
v-on:click
@click
动态属性 attributeName=”href”
:[attributeName]
@[eventName]
为字符串 null表示移除
css属性避免使用大写字母 浏览器会强制转换小写, 单文件组件内的模板不受此限制
装饰符
submit.prevent
ref 深层响应性 都可以
shallowRef 取消深层响应性
reactive 接收对象数组
showReactive 取消深层响应性
解构 会丢失响应性
toRefs() 恢复
dom更新 需要等dom更新完成在进行操作需要使用nextTick() 异步的 async await nextTick()
//下面书写dom更新完成需要执行的代码
…
//
计算属性 (可读) 避免直接修改计算属性的值
计算属性相对于方法有缓存
如果响应式依赖没有改变会直接返回上一次计算的值,相对方法不需要进行getter
写的很好,归我了哈哈哈(-.><.-)
<script setup> |
绑定类的方法
//绑定对象 |
绑定样式的方式
//camelCase 官方推荐这个 ,感觉写对象和这个最佳 |
会匹配浏览器最后能匹配的值
<div :style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }"></div> |
数组方法
挺重要的,虽然学javascript也用过,但是写项目需求更多
push() pop() shift() unshift() 末尾加 末尾减 头删 头加
splice() sort() reverse() 删除添加 正排序 反排序
filter() 返回一个满足条件新数组
concat() 两个数组合并
slice(start, end) 返回从start到end的元素
计算属性不应该更改数组(不用) reverse() 和 sort() 会更改原始数组
修饰符
事件修饰符
.stop
.prevent
.self
.capture
.once
.passive
<!-- 添加事件监听器时,使用 `capture` 捕获模式 --> |
按键修饰符
<!-- 仅在 `key` 为 `Enter` 时调用 `submit` --> |
.enter
.tab
.delete (捕获“Delete”和“Backspace”两个按键)
.esc
.space
.up
.down
.left
.right
与 keyup 事件一起使用时,该按键必须在事件发出时处于按下状态。
keyup.ctrl 只会在你仍然按住 ctrl 但松开了另一个键时被触发。若你单独松开 ctrl 键将不会触发。
.ctrl
.alt
.shift
.meta
.exact 精确控制
click.ctrl.exact
鼠标按键修饰符
.left
.right
.middle
v-model
<input |
v-model=”message” input 的message监听
v-model=”message” textarea 的message监听
v-model=”checked”
v-model=”selected”
select v-model=”selected” multiple
option
option
const checkedName =ref([])
v-model= “checkedName”
select v-model=”selected”
option :value=”{number:123}”
selected将被设置为{number:123}
.lazy change事件更新 IME拼字除外 (IME拼字更新需要第一段代码)
.number 转数字
.trim 去除内容两端空格
生命周期
setup
beforceCreate
created
beforceMount
beforceUpdate
mounted ——————->
updated
beforceUnmount
Unmounted
watch 重要 watcheffect
watch(ref(‘’))
watch(()=>state)
watch([], ([],[]))
深度监听 懒监听 第一次不监听
watch(obj(响应式对象),(newValue,oldValue)=>{
}, 修饰deep)
watchEffect(()=>{
不需要声明obj简化
})
const count =ref('0') |
watch 只追踪明确侦听的数据源
watchEffect 自动追踪所有能访问到的响应式属性
停止需要调用返回函数 同步时不需要会自动停止,异步式不会挂载到当前组件上需要停止
const stop =watch(,(,_)=>{})
stop()
const stopEffect =watchEffect(()=>{})
stopEffect
// 需要异步请求得到的数据 |
模板引用
需要组件挂载后才有
const div =ref('null') |
vue 3.5 版本
const name =useTemplateRef('div') |
拿到的是v-for下的Elements所有元素
const itemsRef =ref([])
v-for ref=”itemsRef”
组件
props emits
slot
// JavaScript 中的 camelCase |
动态组件
onActived()
onDeactived()
<component :is="activeComponent"/> |
传递组件模板
to css选择器字符串,DOM元素对象 模板片段传送到元素下
<Teleport :disabled="isMobile"> |