当前位置: 首页 > news >正文

网站关键词数量郑州软件开发工资

网站关键词数量,郑州软件开发工资,wordpress 相册形式,wordpress图床首页无缩略图PubSubJS库介绍 如果你想在React中使用第三方库来实现Pub/Sub机制,PubSubJS是一个不错的选择。它是一个轻量级的库,可以在浏览器和Node.js环境中使用。 PubSubJS提供了一个简单的API,可以让你在应用程序中订阅和发布消息。你可以使用npm来安…

PubSubJS库介绍

如果你想在React中使用第三方库来实现Pub/Sub机制,PubSubJS是一个不错的选择。它是一个轻量级的库,可以在浏览器和Node.js环境中使用。

PubSubJS提供了一个简单的API,可以让你在应用程序中订阅和发布消息。你可以使用npm来安装它:

npm install pubsub-js

1-引入使用

import PubSub from 'pubsub-js'

2-首先订阅消息

PubSub.subscribe('List',function(msg, data){ console.log(msg, data)})

用于接收发布的信息。

3-发布消息

PubSub.publish('List',data)

4-取消订阅消息

PubSub.unsubscribe(this.token)

案例使用

现在有一个页面,有两个兄弟组件

  • Search组件获取输入的关键字,然后交给List组件去网络请求。
  • List组件展示github的用户列表

1-App组件代码

import React, { Component } from 'react'
import Search from './components/Search'
import List from './components/List'export default class App extends Component {render() {return (<div className="container"><Search/><List/></div>)}
}

2-Search组件代码

import React, { Component } from 'react'
import PubSubJs from 'pubsub-js'export default class Search extends Component {searchHandle = () => {const {KeyVal:{value}} = thisPubSubJs.publish('getSearchVal',value)}render() {return (<section className="jumbotron"><h3 className="jumbotron-heading">Search Github Users</h3><div><input ref={c=>this.KeyVal = c} type="text" placeholder="关键字"/><button onClick={this.searchHandle}>Search</button></div></section>)}
}

3-List组件代码

import React, { Component } from 'react'
import PubSubJs from 'pubsub-js'
import axios from 'axios'
import './index.css'
export default class List extends Component {state = {users: [],isFirst: true,isLoading: false,err: '',}getSearchFunc = (msg, data) => {console.log('接收的信息', data)this.setState({ users: [], isFirst: false, isLoading: true })axios.get(`https://api.github.com/search/users?q=${data}`).then((res) => {this.setState({ users: res.data.items, isFirst: false, isLoading: false })console.log('请求成功了', res.data)},(err) => {console.log('请求失败了', err)this.setState({isFirst: false, isLoading: false,err:err.message })}).catch(() => {})}componentDidMount() {this.token = PubSubJs.subscribe('getSearchVal', this.getSearchFunc)}componentWillUnmount() {PubSubJs.unsubscribe(this.token)}render() {const { users, isFirst, isLoading, err } = this.statereturn (<div className="row">{isFirst ? (<h2>欢迎搜索</h2>) : isLoading ? (<h2>Loading...</h2>) : err ? (<h3>{err}</h3>) : (users.map((userObj) => {return (<div className="card" key={userObj.id}><a href={userObj.html_url} target="_blank" rel="noreferrer"><imgalt="头像"src={userObj.avatar_url}style={{ width: '100px' }}/></a><p className="card-text">{userObj.login}</p></div>)}))}</div>)}
}

4-效果展示

在这里插入图片描述


总结

1- 设计状态时要考虑全面,例如有网络请求的时候要考虑网络延迟和请求失败的状态处理。

2- ES6小知识点:解构赋值 + 重命名

let obj = {a:{b:1}}
const { a } = obj // 传统的解构赋值
const { a:{b} } = obj // 连续的解构赋值
const { a:{b:value} } = obj // 连续解构赋值 + 重命名

3- 消息订阅与发布机制

I. 先订阅,再发布 (一种隔空对话的感觉)

II. 适用于任意组件的通信

III. 要在组件componentWillUnmount生命钩子中取消订阅

4- 扩展fetch发送请求(关注分离的设计思想)

async func () {try {const res = await fetch('url')const data = await res.json()console.log(data)} catch(error) {console.log(error)}
}
http://www.yayakq.cn/news/358565/

相关文章:

  • 网站建设全视频教程下载织梦网站后台一键更新没反应
  • 潍坊高端网站开发傻瓜式做网站
  • flask 电影网站开发互联网广告推广好做吗
  • 做外贸仿牌都用哪些网站怎么制作游戏?
  • 如何的找网站建设公司网上购物平台有哪几个
  • 长尾关键词挖掘站长工具PHP调用wordpress数据库ID
  • 网站建设岗位说明书如何制作产品网站
  • 深圳福田商城网站建设值得关注的网站
  • 网站开发要求杭州正规引流推广公司
  • 广东建设工程信息网站网站建设中 windows
  • 平台网站开发方案站酷网官网进入
  • 商务网站的推广方法有哪些qq网站临时会话
  • 企业网站建设流程介绍delphi做网站开发
  • 网站规划的原则2022网页游戏排行榜前十
  • 机票最便宜网站建设网站空间要备案吗
  • 整站优化提升排名网络整合营销推广
  • wordpress网站评论插件ppt自动生成器
  • 容桂营销网站建设平泉建设局网站
  • saas建站 彩页免费外链发布平台在线
  • 网站做广告投放 做销售线索预估肥乡企业做网站推广
  • 网站管理后台打不开抖音推广平台有哪些
  • 北京免费建站网络营销网络服务部工作计划
  • 做网站找客源线上营销推广方式
  • 上海手机网站建设报价表百度一下首页设为主页
  • wordpress把站wordpress搬家问号
  • 导航网站cms怎么优化自己网站
  • 个性化网站网站页面设计流程
  • 深圳价格实惠的网站建设公司做企业网站服务器在国外
  • 优秀单页网站网站根据城市做二级目录
  • 只用html5可以做网站吗内网网站开发报价