vue全家桶填坑之路

近些日子上手vue全家桶,深感本身的知识水平浅薄,在摸索之中记录了我遇到的一些问题的解决方法。html

场景:表单须要打开新页面修改参数返回保存数据

这个一开始我就想利用vuex的store存储到state之中就大功告成了。
然而发现事情并无那么简单,本身原来的js写法是利用oninput事件进行记录用户输入的内容。可是兼容性并非特别好。
几天前搜索的时候发现了一个更好的方法:
先提取store中的数据传给computed计算属性,而后再把这个值传给v-model用于表单的数据绑定,最后再为这个计算属性增长一个setter,在表单数据变化的时候对值进行commit提交,从而达到数据的实时更新的效果。
参考问答:请问vue的html标签能够用v-model来改变store中的state吗?vue

refs的一些应用场景

在vue之中由于vm.$el的存在就能够利用ref替代原来的dom操做了。
可是有些状况refs仍是会出现问题的。
首先不要再mounted钩子以前调用,这样的话由于要获取的对象并无挂载到实例上而致使失败。
另外还有一种状况就是,不要在响应式的渲染之中(我的的失败经历:条件渲染v-if和循环v-for)使用获取ref注册的元素或组件。
虽然在控制台之中能够看到this.$refs包含了你要获取的对象,可是你在实际调用之中会获取失败。
这也是在vue官方文档里进行了说明:vuex

关于ref注册时间的重要说明: 由于ref自己是做为渲染结果被建立的,在初始渲染的时候你不能访问它们 - 它们还不存在!$refs 也不是响应式的,所以你不该该试图用它在模版中作数据绑定。segmentfault

对于这种状况咱们能够有如下两种方法进行变通处理:dom

  1. 直接为元素添加id经过原始dom进行操做处理this

  2. 经过nextTick进行渲染后的refs获取,这样就不会出现获取失败的状况。
    对于nextTick的官方说明以下code

在下次 DOM 更新循环结束以后执行延迟回调。在修改数据以后当即使用这个方法,获取更新后的 DOMhtm

相关文章
相关标签/搜索