国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

React中消息訂閱與發(fā)布(PubSubJS)——兩個(gè)組件之間通信

這篇具有很好參考價(jià)值的文章主要介紹了React中消息訂閱與發(fā)布(PubSubJS)——兩個(gè)組件之間通信。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

結(jié)合案例:github搜索案例

  • 結(jié)果如下圖
    React中消息訂閱與發(fā)布(PubSubJS)——兩個(gè)組件之間通信,前端學(xué)習(xí),react.js,前端,前端框架
1.父容器代碼
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子模塊代碼(發(fā)布消息)
import React, { Component } from 'react'
import PubSub from 'pubsub-js'
import axios from 'axios'

export default class Search extends Component {

	search = ()=>{
		//獲取用戶的輸入(連續(xù)解構(gòu)賦值+重命名)
		const {keyWordElement:{value:keyWord}} = this
		//發(fā)送請(qǐng)求前通知List更新?tīng)顟B(tài)
		PubSub.publish('atguigu',{isFirst:false,isLoading:true})
		//發(fā)送網(wǎng)絡(luò)請(qǐng)求
		axios.get(`/api1/search/users?q=${keyWord}`).then(
			response => {
				//請(qǐng)求成功后通知List更新?tīng)顟B(tài)
				PubSub.publish('atguigu',{isLoading:false,users:response.data.items})
			},
			error => {
				//請(qǐng)求失敗后通知App更新?tīng)顟B(tài)
				PubSub.publish('atguigu',{isLoading:false,err:error.message})
			}
		)
	}

	render() {
		return (
			<section className="jumbotron">
				<h3 className="jumbotron-heading">搜索github用戶</h3>
				<div>
					<input ref={c => this.keyWordElement = c} type="text" placeholder="輸入關(guān)鍵詞點(diǎn)擊搜索"/>&nbsp;
					<button onClick={this.search}>搜索</button>
				</div>
			</section>
		)
	}
}

3.展示Lisi子模塊代碼(訂閱消息)
import React, { Component } from 'react'
import PubSub from 'pubsub-js'
import './index.css'

export default class List extends Component {

	state = { //初始化狀態(tài)
		users:[], //users初始值為數(shù)組
		isFirst:true, //是否為第一次打開(kāi)頁(yè)面
		isLoading:false,//標(biāo)識(shí)是否處于加載中
		err:'',//存儲(chǔ)請(qǐng)求相關(guān)的錯(cuò)誤信息
	} 

	componentDidMount(){
		this.token = PubSub.subscribe('atguigu',(_,stateObj)=>{
			this.setState(stateObj)
		})
	}

	componentWillUnmount(){
		PubSub.unsubscribe(this.token)
	}

	render() {
		const {users,isFirst,isLoading,err} = this.state
		return (
			<div className="row">
				{
					isFirst ? <h2>歡迎使用,輸入關(guān)鍵字,隨后點(diǎn)擊搜索</h2> :
					isLoading ? <h2>Loading......</h2> :
					err ? <h2 style={{color:'red'}}>{err}</h2> :
					users.map((userObj)=>{
						return (
							<div key={userObj.id} className="card">
								<a rel="noreferrer" href={userObj.html_url} target="_blank">
									<img alt="head_portrait" src={userObj.avatar_url} style={{width:'100px'}}/>
								</a>
								<p className="card-text">{userObj.login}</p>
							</div>
						)
					})
				}
			</div>
		)
	}
}

發(fā)布訂閱分析

  • 在Search子模塊中發(fā)布消息,用PubSub.publish中進(jìn)行發(fā)布消息,在List子模塊中訂閱消息,拿到數(shù)據(jù)進(jìn)行展示
  • 使用步驟
    • 工具庫(kù): PubSubJS
    • 下載: npm install pubsub-js --save
    • 使用
      1)import PubSub from 'pubsub-js' //引入
      2)PubSub.subscribe('delete', function(data){ }); //訂閱
      3)PubSub.publish('delete', data) //發(fā)布消息
      

文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-697000.html

到了這里,關(guān)于React中消息訂閱與發(fā)布(PubSubJS)——兩個(gè)組件之間通信的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • React從入門(mén)到實(shí)戰(zhàn)-react腳手架,消息訂閱與發(fā)布

    React從入門(mén)到實(shí)戰(zhàn)-react腳手架,消息訂閱與發(fā)布

    創(chuàng)建項(xiàng)目并啟動(dòng) 全局安裝 npm install -g create-react-app 切換到想創(chuàng)建項(xiàng)目的目錄,使用命令:create-react-app 項(xiàng)目名稱 ? cd 項(xiàng)目文件夾, npm start 啟動(dòng)項(xiàng)目 創(chuàng)建項(xiàng)目遇到的問(wèn)題 create-react-app : 無(wú)法加載文件 ? 解決辦法: 1.以管理員身份打開(kāi)windows PowerShell 2.輸入set-ExecutionPolicy Remote

    2024年02月15日
    瀏覽(33)
  • react---pubsub-js消息訂閱與發(fā)布

    react---pubsub-js消息訂閱與發(fā)布

    pubsub是一個(gè)用Javascript編寫(xiě)的基于主題的發(fā)布/訂閱庫(kù),適用于任意組件間的通信,需要先訂閱再發(fā)布 ,在組件即將卸載時(shí)鉤子函數(shù)中進(jìn)行取消訂閱。 1. 在線文檔: https://github.com/mroderick/PubSubJS 2. 下載: 【npm install?pubsub-js --save】 3. 使用 (1) import PubSub from \\\'pubsub-js\\\' // 引入 (2) Pub

    2024年02月08日
    瀏覽(24)
  • vue消息訂閱與發(fā)布,實(shí)現(xiàn)任意組件間通訊

    vue消息訂閱與發(fā)布,實(shí)現(xiàn)任意組件間通訊

    第一步:下載第三方消息訂閱與發(fā)布庫(kù),例如常用的pubsub.js,他可以在任何框架中使用包括vue、react、anglar等等。 命令:npm i pubsub-js 注意是pubsub-js(不是點(diǎn)); 第二步:引入庫(kù); import pubsub from \\\'pubsub-js\\\' 第三步:訂閱消息; 第四部:接收消息; ?總結(jié):

    2024年02月13日
    瀏覽(15)
  • react 組件之間的通信(父子組件)

    React中 組件內(nèi)調(diào)用其他組件不需要進(jìn)行 類似于vue 聲明組件(components) React 組件內(nèi)調(diào)用其他組件 直接將組件導(dǎo)入 放置在對(duì)應(yīng)的JSX 代碼中 父子組件通信(傳統(tǒng)): 1、父組件-子組件 ?通過(guò)屬性傳遞 2、子組件-父組件 ?父組件通過(guò)將自身的函數(shù)對(duì)象傳遞給子組件, 子組件執(zhí)行父組件

    2024年02月08日
    瀏覽(93)
  • React組件之間通信

    1-1、安裝 1-2、使用 A組件 B組件 1-3、總結(jié)

    2024年02月16日
    瀏覽(22)
  • React中組件之間如何通信?

    React中組件之間如何通信?

    我們將組件間通信可以拆分為兩個(gè)詞: 組件 通信 回顧Vue系列的文章,組件是 vue 中最強(qiáng)大的功能之一,同樣組件化是 React 的核心思想 相比 vue , React 的組件更加靈活和多樣,按照不同的方式可以分成很多類型的組件 而通信指的是發(fā)送者通過(guò)某種媒體以某種格式來(lái)傳遞信息

    2024年02月04日
    瀏覽(16)
  • ROS通信機(jī)制之話題(Topics)的發(fā)布與訂閱以及自定義消息的實(shí)現(xiàn)

    ROS通信機(jī)制之話題(Topics)的發(fā)布與訂閱以及自定義消息的實(shí)現(xiàn)

    我們知道在 ROS 中,由很多互不相干的節(jié)點(diǎn)組成了一個(gè)復(fù)雜的系統(tǒng),單個(gè)的節(jié)點(diǎn)看起來(lái)是沒(méi)起什么作用,但是節(jié)點(diǎn)之間進(jìn)行了通信之后,相互之間能夠交互信息和數(shù)據(jù)的時(shí)候,就變得很有意思了。 節(jié)點(diǎn)之間進(jìn)行通信的一個(gè)常用方法就是使用 話題(topic) ,話題表示的是一個(gè)定義

    2024年02月11日
    瀏覽(27)
  • Web前端 ---- 【vue】vue 組件傳值(props、全局事件總線、消息的訂閱與發(fā)布)

    Web前端 ---- 【vue】vue 組件傳值(props、全局事件總線、消息的訂閱與發(fā)布)

    目錄 前言 父子組件 父?jìng)髯?子傳父 全局事件總線 什么叫全局事件總線 如何創(chuàng)建全局事件總線 如何在組件上獲取到這個(gè)全局vc對(duì)象 最常用的創(chuàng)建全局事件總線 兄弟組件 消息訂閱與發(fā)布 安裝 使用 爺孫組件 在上篇文章我們介紹了父子組件之間的傳值通信,本文將介紹不僅限

    2024年02月05日
    瀏覽(53)
  • Vue消息訂閱與發(fā)布

    Vue消息訂閱與發(fā)布

    ? 引入第三方庫(kù) pubsub.js: Student.vue School.vue TodoList案例使用消息訂閱實(shí)現(xiàn)刪除功能: App.vue : MyItem.vue: ?

    2024年02月15日
    瀏覽(20)
  • Redis 消息隊(duì)列和發(fā)布訂閱

    Redis 消息隊(duì)列和發(fā)布訂閱

    采用redis 三種方案: ● 生產(chǎn)者消費(fèi)者:一個(gè)消息只能有一個(gè)消費(fèi)者 ● 發(fā)布者訂閱者:一個(gè)消息可以被多個(gè)消費(fèi)者收到 ● stream模式:實(shí)現(xiàn)隊(duì)列和廣播模式 Producer調(diào)用redis的lpush往特定key里放消息,Consumer調(diào)用brpop去不斷監(jiān)聽(tīng)key。 1、利用redis的鏈表,存儲(chǔ)數(shù)據(jù),實(shí)現(xiàn)隊(duì)列模式

    2024年01月18日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包