$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