<strike id="cy2gs"><menu id="cy2gs"></menu></strike>
  • <del id="cy2gs"><dfn id="cy2gs"></dfn></del>
  • Github 用戶查詢案例【基于Vue2全局事件總線通信】

    2023-1-5    前端達人

    前言:

            本次案例是一個基于 Vue2 的全局事件總線通信的仿 Github 用戶搜索模塊,使用的接口是 Github 官方提供的搜索接口: https://api.github.com/search/users?q=xxx(發(fā)送請求時需要將輸入的用戶名稱綁定替換掉xxx),如果對全局事件總線不太熟練的小伙伴可以看這篇文章:http://t.csdn.cn/oHEOWhttp://t.csdn.cn/oHEOW

    文章目錄:

    一:效果展示 

    二:代碼分析

    2.1 綁定自定義事件 

    2.2 觸發(fā)自定義事件 

    三:源碼獲取


    一:效果展示 

    • 未搜索用戶頁面

    •  查詢后加載中頁面

    •  查詢成功渲染頁面

    • 點擊頭像或下部鏈接進入用戶主頁

    •  查詢失敗頁面報錯提示


    二:代碼分析

    代碼共分為了兩個子組件,一個是搜索組件(Search),另一個是列表組件(List),其次search組件中輸入框v-model雙向數(shù)據(jù)綁定,點擊搜索后開始查詢,其中過程分為了四步:第一是未搜索的歡迎頁面背景,第二是請求未加載出來的loading背景,第三是渲染用戶列表,第四是請求失敗的報錯提示頁面背景。

    2.1 綁定自定義事件 

    綁定自定義事件在List組件中,data中的數(shù)據(jù)是定義了userinfo對象來存放其四個狀態(tài)的布爾值,后續(xù)的數(shù)據(jù)傳遞是直接傳遞userinfo這個對象,使用 $on 綁定自定義事件 getuserinfo,當這個事件觸發(fā)時執(zhí)行后面的箭頭回調(diào)函數(shù),將傳遞來的對象接收并覆蓋掉data中原有的四個狀態(tài)布爾值。

     
    
    1. <script>
    2. export default {
    3. name:'List',
    4. data() {
    5. return {
    6. UserInfo:{
    7. iswelcome:true,
    8. isloading:false,
    9. users:'',
    10. error:''
    11. }
    12. }
    13. },
    14. mounted(){
    15. this.$bus.$on('getUserInfo',(datas)=>{
    16. // console.log('list組件收到了傳來的用戶數(shù)據(jù)',res);
    17. this.UserInfo=datas
    18. console.log(datas);
    19. })
    20. }
    21. }
    22. </script>

    2.2 觸發(fā)自定義事件 

    點擊搜索按鈕即可使用 $emit 觸發(fā)自定義事件,在請求成功前會將 isloading 改為true,其余改為false進行數(shù)據(jù)傳遞,傳遞給 list 組件后期就會顯示出loading的背景頁面,其余同理

     
    
    1. <script>
    2. export default {
    3. name:'Search',
    4. data(){
    5. return {
    6. ipt_value:'',
    7. }
    8. },
    9. methods:{
    10. search(){
    11. this.$bus.$emit('getUserInfo',{iswelcome:false,isloading:true,users:'',error:''})
    12. this.$axios.get(`https://api.github.com/search/users?q=${this.ipt_value}`).then(
    13. response => {
    14. this.$bus.$emit('getUserInfo',{iswelcome:false,isloading:false,users:response.data.items,error:''})
    15. },
    16. error => {
    17. console.log(error);
    18. this.$bus.$emit('getUserInfo',{iswelcome:false,isloading:false,users:'',error:error})
    19. }
    20. )
    21. this.ipt_value=''
    22. }
    23. }
    24. }
    25. </script>




    前言:

            本次案例是一個基于 Vue2 的全局事件總線通信的仿 Github 用戶搜索模塊,使用的接口是 Github 官方提供的搜索接口: https://api.github.com/search/users?q=xxx(發(fā)送請求時需要將輸入的用戶名稱綁定替換掉xxx),如果對全局事件總線不太熟練的小伙伴可以看這篇文章:http://t.csdn.cn/oHEOWhttp://t.csdn.cn/oHEOW

    文章目錄:

    一:效果展示 

    二:代碼分析

    2.1 綁定自定義事件 

    2.2 觸發(fā)自定義事件 

    三:源碼獲取


    一:效果展示 

    • 未搜索用戶頁面

    •  查詢后加載中頁面

    •  查詢成功渲染頁面

    • 點擊頭像或下部鏈接進入用戶主頁

    •  查詢失敗頁面報錯提示


    二:代碼分析

    代碼共分為了兩個子組件,一個是搜索組件(Search),另一個是列表組件(List),其次search組件中輸入框v-model雙向數(shù)據(jù)綁定,點擊搜索后開始查詢,其中過程分為了四步:第一是未搜索的歡迎頁面背景,第二是請求未加載出來的loading背景,第三是渲染用戶列表,第四是請求失敗的報錯提示頁面背景。

    2.1 綁定自定義事件 

    綁定自定義事件在List組件中,data中的數(shù)據(jù)是定義了userinfo對象來存放其四個狀態(tài)的布爾值,后續(xù)的數(shù)據(jù)傳遞是直接傳遞userinfo這個對象,使用 $on 綁定自定義事件 getuserinfo,當這個事件觸發(fā)時執(zhí)行后面的箭頭回調(diào)函數(shù),將傳遞來的對象接收并覆蓋掉data中原有的四個狀態(tài)布爾值。

     
    
    1. <script>
    2. export default {
    3. name:'List',
    4. data() {
    5. return {
    6. UserInfo:{
    7. iswelcome:true,
    8. isloading:false,
    9. users:'',
    10. error:''
    11. }
    12. }
    13. },
    14. mounted(){
    15. this.$bus.$on('getUserInfo',(datas)=>{
    16. // console.log('list組件收到了傳來的用戶數(shù)據(jù)',res);
    17. this.UserInfo=datas
    18. console.log(datas);
    19. })
    20. }
    21. }
    22. </script>

    2.2 觸發(fā)自定義事件 

    點擊搜索按鈕即可使用 $emit 觸發(fā)自定義事件,在請求成功前會將 isloading 改為true,其余改為false進行數(shù)據(jù)傳遞,傳遞給 list 組件后期就會顯示出loading的背景頁面,其余同理

     
    
    1. <script>
    2. export default {
    3. name:'Search',
    4. data(){
    5. return {
    6. ipt_value:'',
    7. }
    8. },
    9. methods:{
    10. search(){
    11. this.$bus.$emit('getUserInfo',{iswelcome:false,isloading:true,users:'',error:''})
    12. this.$axios.get(`https://api.github.com/search/users?q=${this.ipt_value}`).then(
    13. response => {
    14. this.$bus.$emit('getUserInfo',{iswelcome:false,isloading:false,users:response.data.items,error:''})
    15. },
    16. error => {
    17. console.log(error);
    18. this.$bus.$emit('getUserInfo',{iswelcome:false,isloading:false,users:'',error:error})
    19. }
    20. )
    21. this.ipt_value=''
    22. }
    23. }
    24. }
    25. </script>
    來源:csdn 藍藍設計建立了UI設計分享群,每天會分享國內(nèi)外的一些優(yōu)秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~ 希望得到建議咨詢、商務合作,也請與我們聯(lián)系01063334945。  分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們?nèi)〉寐?lián)系,我們立即更正或刪除。  藍藍設計www.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網(wǎng)站建設 平面設計服務UI設計公司、界面設計公司、UI設計服務公司、數(shù)據(jù)可視化設計公司、UI交互設計公司、高端網(wǎng)站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司

    日歷

    鏈接

    個人資料

    藍藍設計的小編 http://www.skdbbs.com

    存檔

    主站蜘蛛池模板: 国产精品视频一区二区三区经| 久久精品国产精品亚洲| 91po国产在线精品免费观看| 伊人久久大香线蕉精品不卡| 国产精品丝袜久久久久久不卡| 麻豆aⅴ精品无码一区二区| 精品国产午夜福利在线观看| 国产92成人精品视频免费| 无码人妻精品中文字幕免费| 久久久久亚洲精品无码网址| 一区二区三区精品| jiucao在线观看精品| 日韩精品无码一区二区三区| 人妻少妇精品久久| 国产精品二区观看| 久久精品国产91久久综合麻豆自制 | 国产精品无套内射迪丽热巴| 亚洲AV无码成人精品区狼人影院| 国产国产成人久久精品| 亚洲精品高清国产一久久| 国产精品久久久久久影院| 97久久超碰成人精品网站| 精品人妻无码一区二区色欲产成人 | 精品无码一区在线观看| 综合精品欧美日韩国产在线| 青青热久久国产久精品 | 久久精品国产亚洲综合色| 国产AV国片精品| 国产精品午睡沙发系列| 精品无码久久久久国产| 日韩人妻无码精品一专区| 日本内射精品一区二区视频 | 久久精品国产一区二区| 国产精品丝袜久久久久久不卡| 成人亚洲日韩精品免费视频| 99久久精品费精品国产 | 精品国产欧美另类一区| 精品999久久久久久中文字幕 | 色综合久久综精品| 欧美日韩精品在线| 999久久久国产精品|