JavaScript 经典知识点Web前端之路让前端飞

vue 开发过程遇到的坑-集合

2017-05-03  本文已影响182人  我是王小一

Error 1:must call Vue.use(Vuex) before creating a store instance
Time:2017.05.02

在使用vuex的过程中,store 文件夹下的 index.js(如果是单文件就是store.js)

import Vue from 'vue'
import Vuex from 'vuex'
import actions from './actions'
import getters from './getters'
import listState from './modules/listState'
Vue.use(Vuex);
export default new Vuex.Store({
    actions,
    getters,
    modules: {
        listState
    }
})

实例化前已经注册了Vuex,but 依旧报错如下,

must call Vue.use(Vuex) before creating a store instance

检查写法,应该是没错的,后来在 github 中
https://github.com/eddyerburgh/avoriaz/issues/29

Sorry, this isn't a avoriaz issue. It is a webpack issue. I was on webpack@2.1.0-beta.22 which is required for Laravel's elixir node module. Webpack 2.1.0 breaks Vuex in testing for some reason. If you get this error upgrade webpack, and don't use elixir for your webpack configuration because it's broken。

看了下webpack的版本,正好是2.1.0,之后升级webpack到最新版本2.4.1,问题解决。

Error 2:关于 v-if 和 v-show 文件缓存
Time:2017.05.14
对于 v-if 和 v-show这两个指令,还是比较熟悉的,和 ng 中的 ng-if 和ng-show 类似。虽然知道两者的区别,但是开发过程中,基本都是用 v-if 和v-show 都可以,直到这次用七牛的文件上传api,掉坑里去了。

碰到的问题是这样的,使用七牛文件上传的时候,文件上传以后,如果不重新载入页面,刚才上传的文件被缓存在浏览器中,再次点击文件上传后,把上次上传的文件也加载出来。
在解决这个问题的过程中,使用了 v-if 和 v-show ,发现 使用 v-if 竟然可以解决文件缓存的问题,而使用 v-show 竟然不行。

<el-form-item label="添加图片" :label-width="formLabelWidth">
        <div v-if="files.length == 0">
            <upload-file
                :on-before-upload="BeforeUpload"
                :on-files-added="FilesAdded"
                :on-upload-progress='UploadProgress'
                :on-file-uploaded='FileUploaded'
                :on-upload-complete="UploadComplete"
                :on-error="UploadError"
             ></upload-file>
       </div>

看了下 vue 的文档,

v-if 是真实的条件渲染,因为它会确保条件块在切换当中适当地销毁与重建条件块内的事件监听器和子组件。

相比之下, v-show 简单得多——元素始终被编译并保留,只是简单地基于 CSS 切换。

原来是这样,v-if 在重新渲染的过程中,清除了我刚才上传的文件的“文件缓存”。借用宋小宝的那句话,“没文化.....,你多看书啊,哈哈哈”

上一篇下一篇

猜你喜欢

热点阅读