Vue 2.5從零開始學(xué)習(xí) — v-if急膀,v-show,v-for 指令

Vue 的 v-if龄捡,v-show卓嫂,v-for 指令

文檔警告 Warning:

由于做筆記沒有注意到 Vue 官方文檔中的提示、書寫規(guī)范聘殖,之前在 Vue 實(shí)例對(duì)象中晨雳,data 的寫法是有誤的。

從本頁文檔開始將使用通行寫法奸腺。

When defining a component, data must be declared as a function that returns the initial data object, because there will be many instances created using the same definition. If we use a plain object for data, that same object will be shared by reference across all instances created! By providing a data function, every time a new instance is
created we can call it to return a fresh copy of the initial data.

v-if 與 v-show

按照慣例餐禁,我們依然從一個(gè)需求引入我們的知識(shí)點(diǎn):

頁面上有一個(gè)按鈕,我想讓他控制某個(gè)內(nèi)容元素是否顯示洋机,在 Vue 我該怎么做呢?

1545043084227.png
    <div id="root">
        <div>Hello world</div>
        <button > show or hide </button>
    </div>

    <script>
        new Vue({
            el: "#root",
            data() {
                return {
                    show: true
                }
            },
            methods: {
                // ...About button action
            }
        })
    </script>
  • 我們定義了一個(gè)布爾變量洋魂,用于表示是否顯示內(nèi)容的布爾邏輯狀態(tài) 即 true or false
  • v-if 指令 和 v-show 指令正需要一個(gè)這樣的布爾值绷旗,它們可以將邏輯值的真假綁定在元素上,以此決定元素是否顯示副砍。
  • 還記得我們的 button 點(diǎn)擊事件怎么寫么衔肢?
<button @click="handleClick"> </button>

<!-- 此處簡(jiǎn)寫 Vue 實(shí)例對(duì)象中的 method 部分 -->
    <script>
    methods:{
        handleClick: function(){
            this.show = !this.show //取反
        }
    }
    </script>

那 v-if 和 v-show 有什么區(qū)別呢 ?我們按下 F12豁翎,打開集成查看器一探究竟吧角骤!

當(dāng)我們使用 v-if 時(shí):

    <div v-if="show">Hello world</div>
    <button @click="handleClick"> show or hide </button>
1545043084227.png

當(dāng)我們點(diǎn)擊按鈕后:

1545043134772.png
  • 由此可見,v-if 直接改變了文檔內(nèi)容心剥,將該元素從 DOM 中去除掉了邦尊。

而當(dāng)我們使用 v-show 時(shí):

    <div v-show="show">Hello world</div>
    <button @click="handleClick"> show or hide </button>

當(dāng)我們點(diǎn)擊按鈕后:

1545043283315.png
  • 由此可見,v-show 是通過添加了 CSS 屬性 display: none; 來隱藏元素的优烧。

根據(jù)情況而定:

  • 如果元素?cái)?shù)量非常多時(shí)蝉揍,那么頻繁地操作 DOM 增刪顯然不是一個(gè)好的選擇,所以更多選擇 v-show
  • 如果顯示和隱藏并不那么頻繁畦娄,那么 v-if 也是可以的又沾。

v-for

學(xué)過一個(gè)或多個(gè)編程語言后弊仪,對(duì) for 一定不陌生,應(yīng)該幾乎是所有的編程語言都把 for 定為了一個(gè)和循環(huán)相關(guān)的關(guān)鍵字杖刷,當(dāng)然在 Vue 中也沿用了這種標(biāo)示励饵。

比如我有一組數(shù)據(jù)想要羅列展示,顯然手打一行一行地敲成 HTML 文檔內(nèi)容是一個(gè)非常麻煩低效的選擇滑燃。

那么學(xué)習(xí)了 Vue 役听,我們可以這樣做:

    <div id="root">
        <ul>
            <li v-for="item of list"> {{ item }}</li>
        </ul>
    </div>

    <script>
        new Vue({
            el: "#root",
            data() {
                return {
                    show: true,
                    list: ['Head title', 'Main context', 'End message']
                }
            }
        })
    </script>
  • 語法解析:類同與 Python 的 for 循環(huán),除開 in 變成了 of 以外不瓶,仍然是 for 取出的單項(xiàng) in 項(xiàng)目總集合 的形式禾嫉, 取出的單項(xiàng)是可以作為 插值表達(dá)式 中的數(shù)據(jù)使用的哦!

  • 顯而易見蚊丐,data 中對(duì)應(yīng) list 的數(shù)據(jù)總集合一定要是某種可迭代的數(shù)據(jù)集合類熙参,比如數(shù)組、字典等麦备。

  • Attention 1: 當(dāng)我們使用了 v-for 孽椰,為了盡可能地提升渲染效率,我們都應(yīng)該加上 :key 指令凛篙,:key 指令必須和一個(gè)永不重復(fù)的值綁定黍匾,一般不使用 item,因?yàn)?item 很可能重復(fù)呛梆。

  • Attention 2:大多數(shù)情況下會(huì)使用循環(huán)次數(shù)下標(biāo)锐涯,寫成:

    <div v-for="(item, index) of list" :key="index">
        {{ item }}
    </div>
    

    但這并不是最終的完美選擇,但是當(dāng)需要做排序等這類頻繁改變列表元素位置的操作時(shí)填物,index 作為 key 值會(huì)被打亂纹腌。

    思考題: 那么請(qǐng)問這個(gè)最終解決方案應(yīng)該是什么呢?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末滞磺,一起剝皮案震驚了整個(gè)濱河市升薯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌击困,老刑警劉巖涎劈,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異阅茶,居然都是意外死亡蛛枚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門脸哀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坤候,“玉大人,你說我怎么就攤上這事企蹭“壮铮” “怎么了智末?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)徒河。 經(jīng)常有香客問我系馆,道長(zhǎng),這世上最難降的妖魔是什么顽照? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任由蘑,我火速辦了婚禮,結(jié)果婚禮上代兵,老公的妹妹穿的比我還像新娘尼酿。我一直安慰自己,他們只是感情好植影,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布裳擎。 她就那樣靜靜地躺著,像睡著了一般思币。 火紅的嫁衣襯著肌膚如雪鹿响。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天谷饿,我揣著相機(jī)與錄音惶我,去河邊找鬼。 笑死博投,一個(gè)胖子當(dāng)著我的面吹牛绸贡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播毅哗,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼听怕,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了黎做?” 一聲冷哼從身側(cè)響起叉跛,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤松忍,失蹤者是張志新(化名)和其女友劉穎蒸殿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸣峭,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宏所,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了摊溶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片爬骤。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖莫换,靈堂內(nèi)的尸體忽然破棺而出霞玄,到底是詐尸還是另有隱情骤铃,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布坷剧,位于F島的核電站惰爬,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏惫企。R本人自食惡果不足惜撕瞧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狞尔。 院中可真熱鬧丛版,春花似錦、人聲如沸偏序。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽禽车。三九已至寇漫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間殉摔,已是汗流浹背州胳。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留逸月,地道東北人栓撞。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像碗硬,于是被迫代替她去往敵國(guó)和親瓤湘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容恩尾,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容弛说。關(guān)于...
    云之外閱讀 5,045評(píng)論 0 29
  • # 傳智播客vue 學(xué)習(xí)## 1. 什么是 Vue.js* Vue 開發(fā)手機(jī) APP 需要借助于 Weex* Vu...
    再見天才閱讀 3,525評(píng)論 0 6
  • Vue 實(shí)例 屬性和方法 每個(gè) Vue 實(shí)例都會(huì)代理其 data 對(duì)象里所有的屬性:var data = { a:...
    云之外閱讀 2,201評(píng)論 0 6
  • 1.安裝 可以簡(jiǎn)單地在頁面引入Vue.js作為獨(dú)立版本,Vue即被注冊(cè)為全局變量翰意,可以在頁面使用了木人。 如果希望搭建...
    Awey閱讀 10,995評(píng)論 4 129
  • vue概述 在官方文檔中,有一句話對(duì)Vue的定位說的很明確:Vue.js 的核心是一個(gè)允許采用簡(jiǎn)潔的模板語法來聲明...
    li4065閱讀 7,187評(píng)論 0 25