分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

vue part3.4 小案例 ??消息订阅pubsub与ajax

发布时间:2023-09-06 02:15责任编辑:蔡小小关键词:暂无标签

 pubsub消息订阅组件,便于兄弟组件间调用

npm install --save pubsub-js

app.vue

<template> ?<div class="container"> ???<Search></Search> ???<users-main></users-main> ?</div></template><script>import Search from ‘./components/Search‘import Main from ‘./components/Main‘export default { ?components: { ???Search, ???UsersMain: Main ?}}</script><style> ?.card { ???float:left; ???width: 33.333%; ???padding: .75rem; ???margin-bottom: 2rem; ???border: 1px solid #efefef; ???text-align: center; ?} ?.card > img { ???margin-bottom: .75rem; ???border-radius: 100px; ?} ?.card-text { ???font-size: 85%; ?}</style>
View Code

main.vue

// 由于请求状态在Main中,ajax写在main中以便同步更新4个状态。 写在search中不便更新状态。
<template> ?<div> ???<h2 v-if="firstView">输入用户名搜索</h2> ???<h2 v-if="loading">LOADING...</h2> ???<h2 v-if="errorMsg">{{errorMsg}}</h2> ???<div class="row"> ?????<div class="card" v-for="(user, index) in users" :key="index"> ???????<a :href="user.url" target="_blank"> ?????????<img :src="user.avatar_url" style="width: 100px;"> ???????</a> ???????<p class="card-text">{{user.name}}</p> ?????</div> ???</div> ?</div></template><script>import PubSub from ‘pubsub-js‘import axios from ‘axios‘export default { ?data () { ???return { ?????firstView: true, ?????loading: false, ?????users: null, // [{url: ‘‘, avatar_url: ‘‘, name: ‘‘}] ?????errorMsg: ‘‘ ???} ?}, ?// 由于请求状态在Main中,ajax写在main中以便同步更新4个状态。 写在search中不便更新状态。 ?mounted () { ???PubSub.subscribe(‘search‘, (msg, searchName) => { ?????const url = `https://api.github.com/search/users?q=${searchName}` ?????this.users = null ?????this.errorMsg = ‘‘ ?????this.firstView = false ?????this.loading = true ?????axios.get(url).then(response => { ???????const result = response.data ???????const users = result.items.map(item => ({ ?????????url: item.html_url, ?????????avatar_url: item.avatar_url, ?????????name: item.login ???????})) ???????this.loading = false ???????this.users = users ?????}).catch(error => { ???????this.loading = false ???????this.errorMsg = ‘请求失败‘ ?????}) ???}) ?}}</script><style></style>
View Code

search.vue

<template> ?<section class="jumbotron"> ???<h3 class="jumbotron--heading">Search Github Users</h3> ???<div> ?????<input type="text" placeholder="enter the name you search" v-model="searchName"/> ?????<button @click="search">Search</button> ???</div> ?</section></template><script>import PubSub from ‘pubsub-js‘export default { ?data () { ???return { ?????searchName: ‘‘ ???} ?}, ?methods: { ???search () { ?????const searchName = this.searchName.trim() ?????if (searchName) { ???????PubSub.publish(‘search‘, searchName) ?????} ???} ?}}</script><style></style>
View Code

vue part3.4 小案例 ??消息订阅pubsub与ajax

原文地址:https://www.cnblogs.com/infaaf/p/9688461.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved