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

5個(gè)可以加速開(kāi)發(fā)的VueUse函數(shù)庫(kù)(小結(jié))

 更新時(shí)間:2021年11月15日 11:02:09   作者:杭州程序員張張  
VueUse為Vue開(kāi)發(fā)人員提供了大量適用于Vue2和Vue3的基本Composition API 實(shí)用程序函數(shù)。具有一定的參考價(jià)值,感興趣的可以了解一下

VueUse 是 Anthony Fu 的一個(gè)開(kāi)源項(xiàng)目,它為 Vue 開(kāi)發(fā)人員提供了大量適用于 Vue 2 和 Vue 3 的基本 Composition API 實(shí)用程序函數(shù)。

它為常見(jiàn)的開(kāi)發(fā)人員用例提供了數(shù)十種解決方案,例如,跟蹤引用更改、檢測(cè)元素可見(jiàn)性、簡(jiǎn)化常見(jiàn)的 Vue 模式、鍵盤(pán)/鼠標(biāo)輸入等。這是真正節(jié)省開(kāi)發(fā)時(shí)間的好方法,因?yàn)槟悴槐刈约禾砑铀羞@些標(biāo)準(zhǔn)功能。

我喜歡 VueUse 庫(kù),因?yàn)樵跊Q定提供哪些實(shí)用程序時(shí),它確實(shí)將開(kāi)發(fā)人員放在首位,而且它是一個(gè)維護(hù)良好的庫(kù),因?yàn)樗c當(dāng)前版本的 Vue 保持同步。

VueUse 有哪些實(shí)用程序?

如果你想查看每個(gè)實(shí)用程序的完整列表,我絕對(duì)建議你查看官方文檔。但總結(jié)一下,VueUse 中有 9 種函數(shù)。

  • 動(dòng)畫(huà)(Animation)—包含易于使用的過(guò)渡、超時(shí)和計(jì)時(shí)函數(shù)
  • 瀏覽器(Browser)—可用于不同的屏幕控制、剪貼板、首選項(xiàng)等
  • 組件(Component)— 為不同的組件方法提供簡(jiǎn)寫(xiě)
  • Formatters – 提供反應(yīng)時(shí)間格式化功能
  • 傳感器(Sensors )—用于監(jiān)聽(tīng)不同的 DOM 事件、輸入事件和網(wǎng)絡(luò)事件
  • 狀態(tài)(State )—管理用戶狀態(tài)(全局、本地存儲(chǔ)、會(huì)話存儲(chǔ))
  • 實(shí)用程序(Utility)—不同的實(shí)用程序函數(shù),如 getter、條件、引用同步等
  • Watch —更高級(jí)的觀察者類型,如可暫停觀察者、去抖動(dòng)觀察者和條件觀察者
  • 雜項(xiàng)(Misc)— 事件、WebSockets 和 Web Worker 的不同類型的功能

這些類別中的大多數(shù)都包含幾個(gè)不同的功能,因此 VueUse 可以靈活地用于你的用例,并且可以作為快速開(kāi)始構(gòu)建 Vue 應(yīng)用程序的絕佳場(chǎng)所。

在本文中,我們將研究 5 個(gè)不同的 VueUse 函數(shù),以便你了解在這個(gè)庫(kù)中工作是多么容易。

但首先,讓我們將它添加到我們的 Vue 項(xiàng)目中!

將 VueUse 安裝到你的 Vue 項(xiàng)目中

VueUse 的最佳特性之一是它僅通過(guò)一個(gè)包即可與 Vue 2 和 Vue 3 兼容!

安裝 VueUse 有兩種選擇:npm 或 CDN

npm i @vueuse/core # yarn add @vueuse/core
<script src="https://unpkg.com/@vueuse/shared"></script>
<script src="https://unpkg.com/@vueuse/core"></script>

我建議使用 NPM,因?yàn)樗褂梅ǜ菀桌斫?,但如果我們使?CDN,則可以通過(guò)以下方式在應(yīng)用程序中訪問(wèn) VueUse window.VueUse

對(duì)于 NPM 安裝,所有函數(shù)都可以通過(guò)@vueuse/core使用標(biāo)準(zhǔn)對(duì)象解構(gòu)導(dǎo)入它們來(lái)訪問(wèn),如下所示:

// 從 VueUse 導(dǎo)入的示例
import { useRefHistory } from '@vueuse/core'

好的?,F(xiàn)在我們已經(jīng)安裝了 VueUse,讓我們?cè)谖覀兊膽?yīng)用程序中使用它。

1、useRefHistory 跟蹤響應(yīng)式數(shù)據(jù)的更改

useRefHistory跟蹤對(duì) ref 所做的每個(gè)更改并將其存儲(chǔ)在數(shù)組中。這使我們可以輕松地為我們的應(yīng)用程序提供撤消和重做功能。

讓我們看一個(gè)示例,其中我們正在構(gòu)建一個(gè)我們希望能夠撤消的文本區(qū)域。

第一步是在不使用 VueUse 的情況下創(chuàng)建我們的基本組件——使用 ref、textarea 和用于撤消和重做的按鈕。

<template>
  <p> 
    <button> Undo </button>
    <button> Redo </button>
  </p>
  <textarea v-model="text"/>
</template>

<script setup>
import { ref } from 'vue'
const text = ref('')
</script>

<style scoped>
  button {
    border: none;
    outline: none;
    margin-right: 10px;
    background-color: #2ecc71;
    color: white;
    padding: 5px 10px;;
  }
</style>

然后,讓我們通過(guò)導(dǎo)入useRefHistory函數(shù)然后從我們的文本引用中提取歷史、撤消和重做屬性來(lái)添加 VueUse 。這就像調(diào)用useRefHistory和傳遞我們的 ref一樣簡(jiǎn)單。

import { ref } from 'vue'
import { useRefHistory } from '@vueuse/core'

const text = ref('')
const { history, undo, redo } = useRefHistory(text)

每次我們的 ref 更改時(shí),這都會(huì)觸發(fā)一個(gè)觀察者——更新history我們剛剛創(chuàng)建的屬性。

然后,為了讓我們真正了解發(fā)生了什么,讓我們?cè)谀0逯写蛴v史記錄,undo并redo在單擊相應(yīng)按鈕時(shí)調(diào)用我們的函數(shù)。

<template>
  <p> 
    <button @click="undo"> Undo </button>
    <button @click="redo"> Redo </button>
  </p>
  <textarea v-model="text"/>
  <ul>
    <li v-for="entry in history" :key="entry.timestamp">
      {{ entry }}
    </li>
  </ul>
</template>

<script setup>
import { ref } from 'vue'
import { useRefHistory } from '@vueuse/core'
const text = ref('')
const { history, undo, redo } = useRefHistory(text)
</script>

<style scoped>
  button {
    border: none;
    outline: none;
    margin-right: 10px;
    background-color: #2ecc71;
    color: white;
    padding: 5px 10px;;
  }
</style>

好的,現(xiàn)在讓我們運(yùn)行它。當(dāng)我們輸入時(shí),每個(gè)字符都會(huì)觸發(fā)歷史數(shù)組中的一個(gè)新條目,如果我們單擊撤消/重做,我們將轉(zhuǎn)到相應(yīng)的條目。

還有不同的選項(xiàng)可以為此功能添加更多功能。例如,我們可以深入跟蹤反應(yīng)對(duì)象并限制這樣的歷史條目的數(shù)量。

const { history, undo, redo } = useRefHistory(text, {
  deep: true,
  capacity: 10,
})

如需完整的選項(xiàng)列表,請(qǐng)務(wù)必查看文檔。

2、onClickOutside 關(guān)閉模態(tài)

onClickOutside檢測(cè)在元素之外進(jìn)行的任何點(diǎn)擊。根據(jù)我的經(jīng)驗(yàn),此功能最常見(jiàn)的用例是關(guān)閉任何模式或彈出窗口。

通常,我們希望模態(tài)屏蔽網(wǎng)頁(yè)的其余部分以吸引用戶的注意力并限制錯(cuò)誤。但是,如果他們確實(shí)在模態(tài)之外單擊,我們希望它關(guān)閉。

只需兩個(gè)步驟即可完成此操作:

  • 為我們要檢測(cè)的元素創(chuàng)建一個(gè)模板引用
  • onClickOutside使用此模板引用 運(yùn)行

這是一個(gè)帶有彈出窗口的簡(jiǎn)單組件,使用onClickOutside.

<template>
  <button @click="open = true"> Open Popup </button>
  <div class="popup" v-if='open'>
    <div class="popup-content" ref="popup">
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Corporis aliquid autem reiciendis eius accusamus sequi, ipsam corrupti vel laboriosam necessitatibus sit natus vero sint ullam! Omnis commodi eos accusantium illum?
    </div>
  </div>
</template>
 
 
<script setup>
import { ref } from 'vue'
import { onClickOutside } from '@vueuse/core'
const open = ref(false) // state of our popup
const popup = ref() // template ref
// whenever our popup exists, and we click anything BUT it
onClickOutside(popup, () => {
  open.value  = false
})
</script>
 
 
<style scoped>
  button {
    border: none;
    outline: none;
    margin-right: 10px;
    background-color: #2ecc71;
    color: white;
    padding: 5px 10px;;
  }
  .popup {
    position: fixed;
    top: ;
    left: ;
    width: 100vw;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(, , , 0.1);
  }
  .popup-content {
    min-width: 300px;
    padding: 20px;
    width: 30%;
    background: #fff;
  }
</style>

結(jié)果是這樣的,我們可以用我們的按鈕打開(kāi)彈出窗口,然后通過(guò)在彈出內(nèi)容窗口外單擊來(lái)關(guān)閉它。

3、useVModel 簡(jiǎn)化了 v-model 綁定

Vue 開(kāi)發(fā)人員的一個(gè)常見(jiàn)用例是為組件創(chuàng)建自定義 v-model 綁定。這意味著我們的組件接受一個(gè)值作為 prop,并且每當(dāng)該值被修改時(shí),我們的組件都會(huì)向父級(jí)發(fā)出更新事件。

有關(guān)構(gòu)建自定義 v-model 的完整教程,請(qǐng)查看我們關(guān)于該主題的完整指南。

useVModel 函數(shù)將其簡(jiǎn)化為僅使用標(biāo)準(zhǔn) ref 語(yǔ)法。假設(shè)我們有一個(gè)自定義文本輸入,它試圖為其文本輸入的值創(chuàng)建一個(gè) v-model。通常,我們必須接受該值的 prop,然后發(fā)出更改事件以更新父組件中的數(shù)據(jù)值。

我們可以像普通的 ref 一樣使用和對(duì)待它,而不是使用 ref 和調(diào)用props.value and !這有助于減少我們需要記住的不同語(yǔ)法的數(shù)量!update:valueuseVModel

<template>
    <div>
        <input 
            type="text" 
            :value="data"
            @input="update"
        />
    </div>
</template>
 
 
<script>
import { useVModel } from '@vueuse/core'
export default {
  props: ['data'],
  setup(props, { emit }) {
    const data = useVModel(props, 'data', emit)
    console.log(data.value) // equal to props.data
    data.value = 'name' // equal to emit('update:data', 'name')
    const update = (event) => {
        data.value = event.target.value
    }
    return {
        data,
        update
    }
  },
}
</script>

每當(dāng)我們需要訪問(wèn)我們的值時(shí),我們只需調(diào)用.valueuseVModel 就會(huì)從我們的組件 props 中獲取值。每當(dāng)我們更改對(duì)象的值時(shí),useVModel 都會(huì)向父組件發(fā)出更新事件。

這是父組件可能是什么樣子的一個(gè)快速示例......

<template>
  <div>
    <p> {{ data }} </p>
    <custom-input 
      :data="data" 
      @update:data="data = $event"
    />
  </div>
</template>
 
 
<script>
import CustomInput from './components/CustomInput.vue'
import { ref } from 'vue'
export default {
  components: {
    CustomInput,
  },
  setup () {
    const data = ref('hello')
    return {
      data
    }
  }
}

結(jié)果看起來(lái)像這樣,我們?cè)诟讣?jí)中的值始終與子級(jí)中的輸入保持同步。

4、使用InterpObserver 跟蹤元素可見(jiàn)性

在確定兩個(gè)元素是否重疊時(shí),Interp Observers非常強(qiáng)大。一個(gè)很好的用例是檢查元素當(dāng)前是否在視口中可見(jiàn)。

本質(zhì)上,它檢查目標(biāo)元素與根元素/文檔相交的百分比。如果該百分比超過(guò)某個(gè)閾值,它會(huì)調(diào)用一個(gè)回調(diào)來(lái)確定目標(biāo)元素是否可見(jiàn)。

useInterpObserver提供使用 InterpObserver API 的簡(jiǎn)單語(yǔ)法。我們需要做的就是為我們要檢查的元素提供一個(gè)模板引用。

默認(rèn)情況下,InterpObserver 將使用文檔的視口作為根,閾值為 0.1——因此當(dāng)在任一方向超過(guò)該閾值時(shí),我們的交叉觀察者將觸發(fā)。

該示例的代碼可能看起來(lái)像這樣,其中我們有一個(gè)虛擬段落,它只占用視口、目標(biāo)元素中的空間。

<template>
  <p> Is target visible? {{ targetIsVisible }} </p>
  <div class="container">
    <div class="target" ref="target">
      <h1>Hello world</h1>
    </div>
  </div>
</template>
 
 
<script>
import { ref } from 'vue'
import { useInterpObserver } from '@vueuse/core'
export default {
  setup() {
    const target = ref(null)
    const targetIsVisible = ref(false)
    const { stop } = useInterpObserver(
      target,
      ([{ isIntersecting }], observerElement) => {
        targetIsVisible.value = isIntersecting
      },
    )
    return {
      target,
      targetIsVisible,
    }
  },
}
</script>
 
 
<style scoped>
.container {
  width: 80%;
  margin:  auto;
  background-color: #fafafa;
  max-height: 300px;
  overflow: scroll;
}
.target {
  margin-top: 500px;
  background-color: #1abc9c;
  color: white;
  padding: 20px;
}
</style>

當(dāng)我們運(yùn)行它并滾動(dòng)時(shí),我們會(huì)看到它正確更新。

我們還可以為 Interp Observer 指定更多選項(xiàng),例如,更改其根元素、邊距(用于計(jì)算交點(diǎn)的根邊界框的偏移量)和閾值級(jí)別。

//useInterpObserver 的選項(xiàng)
const { stop } = useInterpObserver(
      target,
([{ isIntersecting }], observerElement) => {
        targetIsVisible.value = isIntersecting
      },
      {
// root, rootMargin, threshold, window
// full options in the source: https://github.com/vueuse/vueuse/blob/main/packages/core/useInterpObserver/index.ts
        threshold: 0.5,
      }
)

同樣重要的是看到這個(gè)方法返回一個(gè)stop函數(shù),我們可以調(diào)用它來(lái)停止觀察交叉點(diǎn)。如果我們只想跟蹤元素第一次在屏幕上可見(jiàn)時(shí),這尤其有用。

在此代碼片段中,一旦targetIsVisible設(shè)置為 true,觀察者將停止,即使我們滾動(dòng)離開(kāi)目標(biāo)元素,我們的值仍將保持為 true。

//停止 InterpObserver
const { stop } = useInterpObserver(
      target,
      ([{ isIntersecting }], observerElement) => {
        targetIsVisible.value = isIntersecting
        if (isIntersecting) {
          stop()
        }
      },
    )

5、useTransition 在值之間緩和

useTransition是整個(gè) VueUse 庫(kù)中我最喜歡的函數(shù)之一。它允許我們?cè)谝恍兄衅交卦跀?shù)值之間緩和。

我們有一個(gè)存儲(chǔ)為 ref 的數(shù)字源和一個(gè)輸出,它將是不同值之間的緩和。例如,假設(shè)我們要為 Vue 3 備忘單構(gòu)建一個(gè)類似于注冊(cè)頁(yè)面上的計(jì)數(shù)器。

我們可以通過(guò)三個(gè)步驟來(lái)做到這一點(diǎn):

  • 創(chuàng)建我們的countref 并將其初始化為零
  • 創(chuàng)建我們的output參考useTransition(設(shè)置我們的持續(xù)時(shí)間和轉(zhuǎn)換類型)
  • 改變count 的價(jià)值
// 使用轉(zhuǎn)換代碼
<script setup>
import { ref } from 'vue'
import { useTransition, TransitionPresets } from '@vueuse/core'
 
 
const source = ref(0)
 
 
const output = useTransition(source, {
  duration: 3000,
  transition: TransitionPresets.easeOutExpo,
})
 
 
source.value = 5000
</script>

然后,在我們的模板中,我們希望顯示的值,output因?yàn)樗梢栽诓煌抵g平滑過(guò)渡。

<template>
  <h2> 
    <p> Join over </p>
    <p> {{ Math.round(output) }}+ </p>
    <p>Developers </p>
  </h2>
</template>
 
 
<script setup>
import { ref } from 'vue'
import { useTransition, TransitionPresets } from '@vueuse/core'
const source = ref()
const output = useTransition(source, {
  duration: 3000,
  transition: TransitionPresets.easeOutExpo,
})
source.value = 5000
</script>

結(jié)果如下!

我們還可以u(píng)seTransition用來(lái)轉(zhuǎn)換整個(gè)數(shù)字?jǐn)?shù)組。這在處理位置或顏色時(shí)很有用。處理顏色的一個(gè)重要技巧是使用計(jì)算屬性將 RGB 值格式化為正確的顏色語(yǔ)法。

<template>
<h2 :style="{ color: color } "> COLOR CHANGING </h2>
</template>
<script setup>
import { ref, computed } from 'vue'
import { useTransition, TransitionPresets } from '@vueuse/core'
const source = ref([, , ])
const output = useTransition(source, {
duration: 3000,
transition: TransitionPresets.easeOutExpo,
})
const color = computed(() => {
const [r, g, b] = output.value
return `rgb(${r}, ${g}, $)`
})
source.value = [255, , 255]
</script>

我們還可以采用一些很酷的方法來(lái)進(jìn)一步定制它,可以使用任何內(nèi)置的過(guò)渡預(yù)設(shè)或使用 CSS 緩動(dòng)功能定義,這個(gè)可以自行決定。

最后的想法

這絕不是 VueUse的完整指南。這些只是我發(fā)現(xiàn) VueUse許多函數(shù)中最有趣的一些函數(shù)而已。

我喜歡所有這些實(shí)用函數(shù),它可以幫助我們加速開(kāi)發(fā)項(xiàng)目,提升開(kāi)發(fā)效率,因?yàn)樗鼈冎械拿恳粋€(gè)都是為了解決特定但常見(jiàn)的用例而設(shè)計(jì)的。

到此這篇關(guān)于5個(gè)可以加速開(kāi)發(fā)的VueUse函數(shù)庫(kù)的文章就介紹到這了,更多相關(guān)VueUse 函數(shù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue-router beforeEach跳轉(zhuǎn)路由驗(yàn)證用戶登錄狀態(tài)

    vue-router beforeEach跳轉(zhuǎn)路由驗(yàn)證用戶登錄狀態(tài)

    這篇文章主要介紹了vue-router beforeEach跳轉(zhuǎn)路由驗(yàn)證用戶登錄狀態(tài),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • vue-router跳轉(zhuǎn)方式的區(qū)別解析

    vue-router跳轉(zhuǎn)方式的區(qū)別解析

    在Vue中,router-link稱為聲明式路由,:to綁定為跳轉(zhuǎn)的目標(biāo)地址,一種是通過(guò)name,另一種是path,這篇文章主要介紹了vue-router跳轉(zhuǎn)方式的區(qū)別,需要的朋友可以參考下
    2022-12-12
  • vue3中form對(duì)象無(wú)法賦值的問(wèn)題解決

    vue3中form對(duì)象無(wú)法賦值的問(wèn)題解決

    這篇文章給大家介紹了vue3中form對(duì)象無(wú)法賦值的問(wèn)題解決,有時(shí)候?qū)ο蟮闹邓阑钯x不上值,這時(shí)候可以看下賦值的對(duì)象變量名是否和頁(yè)面組件中的ref相同,文中給出了代碼示例供大家參考,需要的朋友可以參考下
    2024-01-01
  • vue點(diǎn)擊按鈕動(dòng)態(tài)創(chuàng)建與刪除組件功能

    vue點(diǎn)擊按鈕動(dòng)態(tài)創(chuàng)建與刪除組件功能

    這篇文章主要介紹了vue點(diǎn)擊按鈕動(dòng)態(tài)創(chuàng)建與刪除組件功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • vue中靜態(tài)文件引用的注意事項(xiàng)及說(shuō)明

    vue中靜態(tài)文件引用的注意事項(xiàng)及說(shuō)明

    這篇文章主要介紹了vue中靜態(tài)文件引用的注意事項(xiàng)及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • vue中動(dòng)態(tài)修改animation效果無(wú)效問(wèn)題詳情

    vue中動(dòng)態(tài)修改animation效果無(wú)效問(wèn)題詳情

    這篇文章主要介紹了vue中動(dòng)態(tài)修改animation效果無(wú)效問(wèn)題詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • vueScroll實(shí)現(xiàn)移動(dòng)端下拉刷新、上拉加載

    vueScroll實(shí)現(xiàn)移動(dòng)端下拉刷新、上拉加載

    這篇文章主要介紹了vueScroll實(shí)現(xiàn)移動(dòng)端下拉刷新、上拉加載,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • vue實(shí)現(xiàn)選項(xiàng)卡及選項(xiàng)卡切換效果

    vue實(shí)現(xiàn)選項(xiàng)卡及選項(xiàng)卡切換效果

    這篇文章主要介紹了vue實(shí)現(xiàn)選項(xiàng)卡選項(xiàng)卡切換效果,這里的Vue以單文件的形式引入,另外代碼在實(shí)現(xiàn)上會(huì)一步步的進(jìn)行優(yōu)化。需要的朋友可以參考下
    2018-04-04
  • Vue項(xiàng)目中安裝依賴npm?install一直報(bào)錯(cuò)的解決過(guò)程

    Vue項(xiàng)目中安裝依賴npm?install一直報(bào)錯(cuò)的解決過(guò)程

    這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目中安裝依賴npm?install一直報(bào)錯(cuò)的解決過(guò)程,要解決NPM安裝依賴報(bào)錯(cuò),首先要分析出錯(cuò)誤的原因,文中將解決的過(guò)程介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • 淺談vue-cli5關(guān)于yarn的一個(gè)小坑

    淺談vue-cli5關(guān)于yarn的一個(gè)小坑

    本文主要介紹了vue-cli5關(guān)于yarn的一個(gè)小坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05

最新評(píng)論

望都县| 娱乐| 体育| 寿光市| 辽源市| 林甸县| 峨眉山市| 杂多县| 雅江县| 绩溪县| 廊坊市| 汶川县| 奎屯市| 定日县| 昌吉市| 岚皋县| 阳曲县| 同心县| 尤溪县| 泸定县| 阿拉尔市| 偏关县| 宽城| 黄石市| 乐陵市| 庆云县| 资源县| 湾仔区| 泰安市| 宿州市| 巴青县| 鄄城县| 高唐县| 津南区| 合水县| 林甸县| 东海县| 麟游县| 磐石市| 肃南| 炎陵县|