$forceupdate 使 Vue 实例从新渲染。注意它仅仅影响实例自己和插入插槽内容的子组件,而不是全部子组件。
因为某些场景 $forceupdate 不起做用,因此用下面的hack方法。通常来讲,这种强制渲染某个组件的状况很少,在组件内部应该处理好内部的渲染。
这个例子仍是由于使用某个库后发现了一个bug,后面才想到如下hack方法的。css
<my-comp v-if="show"></my-comp> <script> data() { return { show: true } }, methods: { reRender() { this.show = false this.$nextTick(() => { this.show = true }) } } </script>
当 ref 和 v-for 一块儿使用的时候,你获得的引用将会是一个包含了对应数据源的这些子组件的数组。
<div v-for="item in list" :ref="item.code" @click="handleClick(item.code)">{{item.title}}</div> handleClick(code) { ~~let dom = this.$refs[code]~~ // 错误的写法 let dom = this.$refs[code][0] }
vue的一些api在特殊状况下会出现不一致的状况,这点比较蛋疼,须要对文档比较熟悉。html
之后在公司里,若是作项目管理或者code review均可以用gitlab来作。前端
css 背景图片background-size的几种适用范围vue
本身评估的时间通常会留点 buffer,自我感受应该没问题, 实际上开发过程可能会有各类会议、需求和技术方案变动或者突发事件。因此多留一点 buffer 会更好,由于这个时间点多是下游运营活动上线时间点,评估后业务方以为太长能够砍需求拆成两期或者调整上线预期,但一旦设置了时间点,不该该跳票。若是你比预期早完成上线,皆大欢喜,若是你一次次的告知业务方还须要延期一两天,效果正好相反。
无缝滚动组件git
npm install --save-dev prettier pretty-quick husky
package.json里配置github
"husky": { "hooks": { "pre-commit": "pretty-quick --staged" } },
须要注意的事,安装包以后,package-lock.json也须要提交commit,不然hooks不会执行(不知道为何)!vue-cli
data() { return { arr: [ {status: true, foo: 1}, {status: false, foo: 2} ] } } computed { // 用计算属性代替,而不是每次手动计算一次 activeArr() { return this.arr.filter(i => i.status) } }
// bad function someFunction(someCondition) { if (someCondition) { // Do Something } } // good 逻辑更清晰,避免过分else if function someFunction(someCondition) { if (!someCondition) { return; } // Do Something }
function hexify(color) { var values = color .replace(/rgba?\(/, '') .replace(/\)/, '') .replace(/[\s+]/g, '') .split(','); var a = parseFloat(values[3] || 1), r = Math.floor(a * parseInt(values[0]) + (1 - a) * 255), g = Math.floor(a * parseInt(values[1]) + (1 - a) * 255), b = Math.floor(a * parseInt(values[2]) + (1 - a) * 255); return "#" + ("0" + r.toString(16)).slice(-2) + ("0" + g.toString(16)).slice(-2) + ("0" + b.toString(16)).slice(-2); } var myHex = hexify('rgba(255,232,186,0.4)'); // "#f5faf3"
plugins: [ 'vue' ] eslint ./src --fix --ext .js,.vue
$emit 加自定义参数typescript
renderless component
探索Vue高阶组件npm
{ path: '/login', name: 'Login', component: () => import('@/views/login/Login'), hidden: false }
解决方法,在.eslintrc.js里添加如下代码,并安装该插件json
parserOptions: { parser: "babel-eslint" } npm install babel-eslint --save-dev
import {Form} from 'iview' // iview 里有比较全的 ts 类型定义,能够用起来 type IForm = Form (this.$refs.form as IForm).validate((valid: boolean | undefined): void => { if (valid) { this.$Message.success('Success!'); const resp = login({username: '', password: ''}) } })
npm install xx -E
this.$refs.xxx as Vue).$el