<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雙向數據綁定,點擊搜索后開始查詢,其中過程分為了四步:第一是未搜索的歡迎頁面背景,第二是請求未加載出來的loading背景,第三是渲染用戶列表,第四是請求失敗的報錯提示頁面背景。

    2.1 綁定自定義事件 

    綁定自定義事件在List組件中,data中的數據是定義了userinfo對象來存放其四個狀態(tài)的布爾值,后續(xù)的數據傳遞是直接傳遞userinfo這個對象,使用 $on 綁定自定義事件 getuserinfo,當這個事件觸發(fā)時執(zhí)行后面的箭頭回調函數,將傳遞來的對象接收并覆蓋掉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組件收到了傳來的用戶數據',res);
    17. this.UserInfo=datas
    18. console.log(datas);
    19. })
    20. }
    21. }
    22. </script>

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

    點擊搜索按鈕即可使用 $emit 觸發(fā)自定義事件,在請求成功前會將 isloading 改為true,其余改為false進行數據傳遞,傳遞給 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雙向數據綁定,點擊搜索后開始查詢,其中過程分為了四步:第一是未搜索的歡迎頁面背景,第二是請求未加載出來的loading背景,第三是渲染用戶列表,第四是請求失敗的報錯提示頁面背景。

    2.1 綁定自定義事件 

    綁定自定義事件在List組件中,data中的數據是定義了userinfo對象來存放其四個狀態(tài)的布爾值,后續(xù)的數據傳遞是直接傳遞userinfo這個對象,使用 $on 綁定自定義事件 getuserinfo,當這個事件觸發(fā)時執(zhí)行后面的箭頭回調函數,將傳遞來的對象接收并覆蓋掉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組件收到了傳來的用戶數據',res);
    17. this.UserInfo=datas
    18. console.log(datas);
    19. })
    20. }
    21. }
    22. </script>

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

    點擊搜索按鈕即可使用 $emit 觸發(fā)自定義事件,在請求成功前會將 isloading 改為true,其余改為false進行數據傳遞,傳遞給 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設計分享群,每天會分享國內外的一些優(yōu)秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~ 希望得到建議咨詢、商務合作,也請與我們聯系01063334945。  分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。  藍藍設計www.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業(yè)提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司

    日歷

    鏈接

    個人資料

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

    存檔

    主站蜘蛛池模板: 亚洲精品国产成人片| 久久国产精品无码HDAV| 无码人妻精品一区二区三区东京热| 精品人妻一区二区三区毛片| 国产精品无码素人福利不卡| 无码人妻丰满熟妇精品区| 亚洲精品乱码久久久久66| 国产成人精品日本亚洲专区| 国产精品免费无遮挡无码永久视频| 国产精品九九九| 99re8这里有精品热视频免费| 在线成人精品国产区免费| 国产微拍精品一区二区| 亚洲国产精品热久久| 2022国产精品福利在线观看| 蜜芽亚洲av无码精品色午夜| 综合久久精品色| 欧美亚洲成人精品| 精品国产青草久久久久福利| 四虎在线精品视频一二区| 99久久免费国产精品热| 精品深夜AV无码一区二区| 久久久久久亚洲Av无码精品专口 | 极品精品国产超清自在线观看| 色欲精品国产一区二区三区AV| 中文字幕精品亚洲无线码一区应用| 欧美精品一区二区三区免费| 热RE99久久精品国产66热| 久久免费国产精品| 久久免费99精品国产自在现线| 久久成人精品| 久久国产精品无码网站| 国内精品久久久久久久亚洲| 国内精品伊人久久久久影院对白| 国产在线国偷精品免费看| 国産精品久久久久久久| 久久精品18| 婷婷久久精品国产| 亚洲精品无码午夜福利中文字幕 | 亚洲国产精品福利片在线观看| 真实国产乱子伦精品视频|