最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue實(shí)現(xiàn)列表展示示例詳解

 更新時(shí)間:2022年07月27日 10:12:22   作者:不吃辣的小周  
這篇文章主要為大家介紹了vue實(shí)現(xiàn)列表展示的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Vue 的CSS之deep語(yǔ)法

::v-deep

我們知道,在Vue組件的style標(biāo)簽里,加上scoped屬性,會(huì)使寫(xiě)的樣式只影響當(dāng)前的組件,不會(huì)影響到子組件。

去掉scoped就可以了,但是去掉scoped同時(shí)也會(huì)導(dǎo)致其他問(wèn)題,可能會(huì)影響到別的。

有什么方法能在父組件的css里影響子組件的樣式,同時(shí)保留scoped呢?

deep有兩種寫(xiě)法,::v-deep兼容性最強(qiáng), 優(yōu)先使用這個(gè)。

使用方法:在想要影響子組件的那個(gè)元素的選擇器的前邊加上::v-deep

//Statistics.vue父組件
<template>
   <Layout>
       <Type/>
   </Layout>
</template>
<style lang="scss" scoped>
    ::v-deep li{
        border:1px solid black;
    }
    ::v-deep ul{
        border:1px solid red;
    }
</style>

Type子組件里有ul和li元素,想要在父組件里改變它的樣式,就在選擇器前加::v-deep,表示深入到子組件里邊找這個(gè)選擇器??梢园l(fā)現(xiàn)成功影響了自組件的樣式。

可是如果子組件里有很多個(gè)li,或者li嵌套li,那只在外邊說(shuō)深入里邊的li不準(zhǔn)確。怎么精確的定位到子組件里的某個(gè)元素呢?

classPrefix 前綴

可以給子組件傳一個(gè)prop,是classPrefix。在子組件里判斷,如果外邊給傳了這個(gè)classPrefix,那某個(gè)元素就擁有了一個(gè)class,叫做"xxx-item",xxx是classPrefix變量的值。

然后在父組件的css里,就可以deep 這個(gè)加了前綴的選擇器,就可以精準(zhǔn)找到這個(gè)元素了。

給元素綁定class

給一個(gè)元素添加class可以使用&&,也可以使用對(duì)象形式。

<li :class="type==='-' && 'selected'"
                @click="selectType('-')">支出
</li>

如果前邊的表達(dá)式為T(mén)rue,這個(gè)元素就擁有了后邊的class。如果我這時(shí)再給它添加一個(gè)class綁定,會(huì)出錯(cuò),不能同時(shí)有兩個(gè):class,所以升級(jí)使用對(duì)象

<li :class="{selected:type==='-',
            [classPrefix+'-item']:classPrefix}"
                @click="selectType('-')">支出
</li>

綁定的class是一個(gè)對(duì)象,里邊是key-value。表示如果value表達(dá)式為真,我就擁有了key這個(gè)class。因?yàn)閷?duì)象可以有很多個(gè)鍵值對(duì),所以使用對(duì)象可以同時(shí)動(dòng)態(tài)綁定多個(gè)class。

我要綁定的第二個(gè)class,是xxx-item,xxx是父組件要給我傳的一個(gè)prop。如果給傳了,即如果classPrefix這個(gè)外部屬性給傳了,我就擁有了以它為前綴的一個(gè)class??墒沁@個(gè)classPrefix是一個(gè)變量,在這里使用${}插值不合法。

有ES6的新語(yǔ)法:如果一個(gè)key里邊有變量,就用[]把這個(gè)key包起來(lái),里邊用字符串相加的方式表達(dá)。

總結(jié)

在子組件的特定元素上綁定了classPrefix的類(lèi)之后,在父組件的css里就可以deep 這個(gè)新加的class找到這個(gè)元素了。

<template>
   <Layout>
       <Type :type.sync="yyy" class-prefix="xxx"/>
   </Layout>
</template>
<style lang="scss" scoped>
    ::v-deep .xxx-item{
        border:1px solid black;
    }
    ::v-deep ul{
        border:1px solid red;
    }
</style>

使用classPrefix在以下場(chǎng)景非常好用:一個(gè)父組件使用了多個(gè)一樣的子組件,但是又需要不同的樣式,就可以給不同的子組件傳不同的classPrefix,那么里邊的具體某個(gè)元素在不同的使用下就有獨(dú)特的class。這樣每個(gè)組件的樣式都不互相影響。

Object.freeze

凍結(jié),使它的地址和內(nèi)容都不會(huì)被改變

如果一個(gè)數(shù)組被聲明成常量,還是可以給它添加元素的。但是被凍結(jié)之后,就連添加元素都不行了。

關(guān)于Vue和ts的配合問(wèn)題

如果使用了Vuex,當(dāng)在index.ts里定義了store時(shí),我們自己可以指定它的類(lèi)型,指定之后,在index.ts里是有類(lèi)型的。

但是出了這個(gè)文件,在組件里的ts里使用時(shí),發(fā)現(xiàn)$store的類(lèi)型變成了any,state的類(lèi)型也變成了any。

也就是說(shuō),定義的時(shí)候定義了類(lèi)型,但是使用的時(shí)候,無(wú)法把類(lèi)型正確的傳出來(lái)。這是因?yàn)樵谝粋€(gè)初始化文件里,已經(jīng)把$store的類(lèi)型寫(xiě)死了是any。

那只能在使用的時(shí)候,使用as語(yǔ)法,強(qiáng)制類(lèi)型轉(zhuǎn)換。

JSON是不支持Date類(lèi)型的數(shù)據(jù)的。所以在存進(jìn)localStorage里之前,要把一個(gè)表示日期的變量聲明成string類(lèi)型。

然后生成日期的時(shí)候,使用toISOString()方法把日期轉(zhuǎn)成字符串。

record2.date=new Date().toISOString()

ISO8601和dayjs庫(kù)

一. ISO8601

國(guó)際標(biāo)準(zhǔn)ISO 8601,是國(guó)際標(biāo)準(zhǔn)化組織的日期和時(shí)間的表示方法

我們關(guān)注日期和時(shí)間的組合表示法

合并表示時(shí),要在時(shí)間前面加一大寫(xiě)字母T,如要表示東八區(qū)時(shí)間2004年5月3日下午5點(diǎn)30分8秒,可以寫(xiě)成2004-05-03T17:30:08+08:00

1. Date對(duì)象=>ISO字符串

new Date()可以得到一個(gè)當(dāng)前時(shí)間的date對(duì)象,是中國(guó)標(biāo)準(zhǔn)時(shí)間。

我們通常使用toISOString() 把這個(gè)Date對(duì)象轉(zhuǎn)換成ISO表示方式的字符串。

2. ISO字符串=>Date對(duì)象

比如我們有一段ISO字符串,把這個(gè)字符串放入Date.parse()里,會(huì)得到一串?dāng)?shù)字,再把這串?dāng)?shù)字放到new Date() 里,就可以還原成Date對(duì)象。

JS操作時(shí)間的庫(kù)-dayjs

安裝

yarn add dayjs

使用

import dayjs from 'dayjs';

dayjs() 就相當(dāng)于new Date() ,返回一個(gè)當(dāng)前時(shí)間的對(duì)象。這個(gè)對(duì)象有很多API,操作這個(gè)時(shí)間。

也可以傳進(jìn)去一段ISO字符串,轉(zhuǎn)換成dayjs對(duì)象

beautify(string: string){
            const day=dayjs(string)
            const now=dayjs()
            if(day.isSame(now,'day')){
                return '今天'
            }else if(day.isSame(now.subtract(1,'day'),'day')){
                return '昨天'
            }else if(day.isSame(now.subtract(2,'day'),'day')){
                return '前天'
            }else if(day.isSame(now,'year')) {
                return day.format('M月M日')
            }else {
                return day.format('YYYY年M月D日')
            }
}

這個(gè)參數(shù)字符串是'2020-5-30&#39;這樣的字符串,是通過(guò)把Date對(duì)象進(jìn)行.ISOString()轉(zhuǎn)換成ISO標(biāo)準(zhǔn)時(shí)間,然后以T分隔出來(lái)的日期字符串。

我們想根據(jù)不同的情況進(jìn)行不同的展示。比如,顯示今天,昨天,前天。

有時(shí)候我們想把一堆日期排序,就需要比較日期的大小。如果現(xiàn)在的每一個(gè)日期是ISO字符串的形式,字符串可以使用> <=來(lái)比較,但是如果想相減呢?

字符串是不支持相減的。只能把他們變成數(shù)字,取值,再相減

dayjs(string).valueOf()

傳進(jìn)dayjs里,變成對(duì)象,調(diào)用valueOf,就變成值了,這時(shí)就可以相減了。

JSON.parse的返回值沒(méi)有類(lèi)型

function clone&lt;T&gt;(data: T): T{
    return JSON.parse(JSON.stringify(data))
}
export default clone

對(duì)于數(shù)組,對(duì)象這類(lèi)數(shù)據(jù)類(lèi)型,有時(shí)我們需要克隆另外一個(gè)相同的數(shù)據(jù),但是地址不一樣。為了不改變?cè)瓉?lái)的對(duì)象。

可以先序列化,再反序列化,就得到了和原來(lái)內(nèi)容一樣,但地址不同的對(duì)象。

但是JSON.parse的返回值是any類(lèi)型的,有時(shí)我們還需要對(duì)這個(gè)返回值做一些操作,ts就不知道它是什么類(lèi)型了。

所以我們可以指定,傳進(jìn)去的數(shù)據(jù)是什么類(lèi)型,克隆之后的返回值就是什么類(lèi)型。比如T,然后ts會(huì)說(shuō)不知道T在哪里聲明了。所以用一個(gè)<>聲明一下,再使用。

然后在調(diào)用clone函數(shù)的時(shí)候,傳進(jìn)去的參數(shù)要指明類(lèi)型。這樣克隆完的就還是一樣的類(lèi)型。

以上就是vue實(shí)現(xiàn)列表展示示例詳解的詳細(xì)內(nèi)容,更多關(guān)于vue列表展示的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue中使用vue-pdf嵌入和展示PDF文件

    Vue中使用vue-pdf嵌入和展示PDF文件

    在vue中實(shí)現(xiàn)在線(xiàn)預(yù)覽PDF文件我們可以使用vue-pdf來(lái)實(shí)現(xiàn),下面這篇文章主要介紹了Vue中使用vue-pdf嵌入和展示PDF文件的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • 關(guān)于vue中對(duì)window.openner的使用指南

    關(guān)于vue中對(duì)window.openner的使用指南

    opener屬性是一個(gè)可讀可寫(xiě)的屬性,可返回對(duì)創(chuàng)建該窗口的Window對(duì)象的引用,下面這篇文章主要給大家介紹了關(guān)于vue中對(duì)window.openner使用的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • vue實(shí)現(xiàn)移動(dòng)端的開(kāi)關(guān)按鈕

    vue實(shí)現(xiàn)移動(dòng)端的開(kāi)關(guān)按鈕

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)移動(dòng)端的開(kāi)關(guān)按鈕,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • vue-cli3使用 DllPlugin 實(shí)現(xiàn)預(yù)編譯提升構(gòu)建速度

    vue-cli3使用 DllPlugin 實(shí)現(xiàn)預(yù)編譯提升構(gòu)建速度

    這篇文章主要介紹了vue-cli3使用 DllPlugin 實(shí)現(xiàn)預(yù)編譯提升構(gòu)建速度 ,需要的朋友可以參考下
    2019-04-04
  • vue跨域proxy代理配置詳解

    vue跨域proxy代理配置詳解

    今天被vue中proxy配置困擾了一天,記錄一下,下面這篇文章主要給大家介紹了關(guān)于Vue配置文件中的proxy配置方式的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 一個(gè)基于vue3+ts+vite項(xiàng)目搭建初探

    一個(gè)基于vue3+ts+vite項(xiàng)目搭建初探

    當(dāng)市面上主流的組件庫(kù)不能滿(mǎn)足我們業(yè)務(wù)需求的時(shí)候,那么我們就有必要開(kāi)發(fā)一套屬于自己團(tuán)隊(duì)的組件庫(kù),下面這篇文章主要給大家介紹了一個(gè)基于vue3+ts+vite項(xiàng)目搭建的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • 詳細(xì)講解如何創(chuàng)建, 發(fā)布自己的 Vue UI 組件庫(kù)

    詳細(xì)講解如何創(chuàng)建, 發(fā)布自己的 Vue UI 組件庫(kù)

    當(dāng)我們自己開(kāi)發(fā)了一個(gè) _UI Component_, 需要在多個(gè)項(xiàng)目中使用的時(shí)候呢? 我們首先想到的可能是直接復(fù)制一份過(guò)去對(duì)嗎?我們?yōu)槭裁床话l(fā)布一個(gè) UI 組件庫(kù)給自己用呢?下面小編和大家來(lái)一起學(xué)習(xí)下吧
    2019-05-05
  • vue.js實(shí)現(xiàn)一個(gè)瀑布流的組件

    vue.js實(shí)現(xiàn)一個(gè)瀑布流的組件

    這篇文章主要為大家介紹了vue.js實(shí)現(xiàn)一個(gè)瀑布流的組件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 如何解決ElementPlus的el-table底白線(xiàn)問(wèn)題

    如何解決ElementPlus的el-table底白線(xiàn)問(wèn)題

    這篇文章主要介紹了如何解決ElementPlus的el-table底白線(xiàn)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • vue中實(shí)現(xiàn)在外部調(diào)用methods的方法(推薦)

    vue中實(shí)現(xiàn)在外部調(diào)用methods的方法(推薦)

    下面小編就為大家分享一篇vue中實(shí)現(xiàn)在外部調(diào)用methods的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02

最新評(píng)論

香港 | 伊金霍洛旗| 平原县| 仙游县| 永年县| 湘西| 马公市| 西林县| 牟定县| 高要市| 梁山县| 北安市| 京山县| 德安县| 丰顺县| 巴中市| 万宁市| 余庆县| 平凉市| 天水市| 汾西县| 彭泽县| 祥云县| 吴江市| 阿尔山市| 英超| 句容市| 荆州市| 永泰县| 鄱阳县| 射洪县| 合作市| 海伦市| 中阳县| 广灵县| 贡山| 嫩江县| 册亨县| 密山市| 长顺县| 宝应县|