key属性
为什么要加
key -- api 解释
key的特殊属性主要用在vue的虚拟dom算法,如果不适用key,vue会使用一种最大限度减少动态元素并且尽可能的尝试修复/再利用相同类型元素的算法。使用Key,它会基于Key的变化重新排列元素顺序,并且会移除Key不存在的元素。
v-for为什么要加Key
-
{{item.name}}
有key
-
{{item.name}}
为什么使用v-for时必须添加唯一的key?
const list = [
{
id: 1,
name: 'test1',
},
{
id: 2,
name: 'test2',
},
{
id: 3,
name: 'test3',
},
]
{{item.name}}
const list = [
{
id: 1,
name: 'test1',
},
{
id: 2,
name: 'test2',
},
{
id: 3,
name: 'test3',
},
{
id: 4,
name: '我是在最后添加的一条数据',
},
]
const list = [
{
id: 1,
name: 'test1',
},
{
id: 4,
name: '我是插队的那条数据',
}
{
id: 2,
name: 'test2',
},
{
id: 3,
name: 'test3',
},
]
两个相同的组件产生类似的dom结构,不同的组件产生不同的dom结构。
同一层级的一组节点
特殊特性
key
预期:number | string
key的特殊属性主要用在vue的虚拟dom算法,在新旧nodes对比时辨识vnodes。
它可以用于强制替换元素,组件而不是重复使用它。
完整地触发组件的生命周期钩子
触发过渡
{{text}}
ref被用来给元素或子组件注册引用信息,引用信息将会注册在父组件的$refs对象上。如果在普通的dom元素上使用,引用指向就是dom元素,如果用在子组件上,引用就指向组件实例:
hello
v-for用于元素或组件的时候,引用信息将包含dom节点或组件实例的数组
is
用于动态组件且基于dom内模板的限制来工作
data: function () {
return {
todos: [
{
id: 1,
text: '学习使用 v-for'
},
{
id: 2,
text: '学习使用 key'
}
]
}
}
-
{{ todo.text }}
-
{{ todo.text }}
永远不要把 v-if 和 v-for 同时用在同一个元素上。
为了过滤一个列表中的项目
v-for="user in users" v-if="user.isActive"
v-for="user in users"
v-if="shouldShowUsers"
-
{{ user.name }}
this.users.map(function (user) {
if (user.isActive) {
return user.name
}
})
computed: {
activeUsers: function() {
return this.user.filter(function (user) {
return user.isActive
})
}
}
-
{{user.name}}
-
{{user.name}}
-
{{user.name}}
-
{{user.name}}
-
{{ user.name }}
-
{{ user.name }}
-
{{ user.name }}
-
{{ user.name }}
虚拟Dom以及Key属性的作用
{{message}} {{message * message}}
{{value}}
vue是如果触发组件更新的
mutations: {
increment(state, n) {
state.count += n
}
}
vuex核心概念以及底层原理
核心概念
state->this.$store.state.xxx取值
getter->this.$store.getters.xxx取值
mutation->this.$store.commit("xxx")赋值
action->this.$store.dispatch("xxx")赋值
module
底层原理:
State:提供一个响应式数据
Getter:借助Vue的计算属性computed来实现缓存
mutation:更改state方法
action:触发mutaion方法
module:Vue.set动态添加state到响应式数据中
vuex最佳实战
使用常量替代mutation事件类型
// mutation-type.js
export const SOME_MUTATION="SOME_MUTATION“
// store.js
import Vuex from 'vues'
import { SOME_MUTATION } from ''
const store = new Vuex.Store({
state: { ... },
mutations {
[SOME_MUTATION] (state) {
}
}
})
传统开发模式
www.xxx.com - index.html
www.xxx.com/about -about.html
vue touter的使用场景
监听url的变化,并在变化前后执行相应的逻辑
不同的url对应不同的不同的组件
提供多种方式改变Url的api
使用方式:
提供一个路由配置表,不同url对应不同组件的配置
初始化路由实例new VueRouter()
挂载到vue实例上
提供一个路由占位,用来挂载Url匹配到的组件
选择何种模式的路由以及底层原理
hash模式:丑,无法使用锚点定位
Nuxt解决了哪些问题?
Nuxt核心原理,SSR的核心原理
Ui组件对比
Element UI,ANT design vue,iview
提升开发效率
Vetur,ESLint,Prettier,Vue DevTools
Vuex是通过什么方式提供响应式数据的?
扩展简化版的min-vuex,实现getters,并实现Vuex的方式注入$store
计算属性computed实现getters缓存
beforeCreate中混入$store的获取方式
若本号内容有做得不到位的地方(比如:涉及版权或其他问题),请及时联系我们进行整改即可,会在第一时间进行处理。
请点赞!因为你们的赞同/鼓励是我写作的最大动力!
欢迎关注达达的简书!
这是一个有质量,有态度的博客