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

网站后台路径公众号网站建设

网站后台路径,公众号网站建设,外贸做网站,移动端cpu组件之间通讯常用方案 1、通过props 2、通过context 3、通过发布订阅模式 4、通过Redux 后面会有专栏介绍 1、安装 pubsub-js 插件 yarn add pubsub-js 常用的事件 a、发布事件:传入一个自定义事件名称(name),以及要发布的消息内…

组件之间通讯常用方案
1、通过props
2、通过context
3、通过发布订阅模式
4、通过Redux 后面会有专栏介绍

1、安装 pubsub-js 插件 yarn add pubsub-js

常用的事件
a、发布事件:传入一个自定义事件名称(name),以及要发布的消息内容(messagePubsub.publish('name', 'message')
还可以进行异步发布 Pubsub.publishSync('name', 'message')
b、订阅事件:传入发布事件的的名称 (name),以及接收name事件传递参数的回调函数 callback,最终会返回一个类似setTimeout 的timer 用于标记当前订阅的事件,在取消订阅时候可以之间传入此值 let sub0 = Pubsub.subscribe('name', callback)

c、取消订阅
Pubsub.unsubscribe('name') // 可以传入发布事件名称进行取消
Pubsub.unsubscribe(sub0) // 还可以传入 订阅事件返回的标识进行取消

2、在发布事件组件中引入

相对于自定义的发布订阅器要简单一些
可以同时发布多个事件

// 引入插件
import PubSub  from 'pubsub-js'
export default function ChildA() {const handlePublish = () => {// 调用发布事件PubSub.publish('onChangeName', '修改名称')}return (<div style={{background:'blue'}}><h3>组件A</h3><button onClick={handlePublish}>发布</button></div>)
}

3、在订阅组件中使用

可以订阅多个事件,取消多个事件

import { useEffect, useState } from "react"
import PubSub from "pubsub-js"
export default function ChildB() {const [name, setName] = useState('')const handleEvents = (fncName, data) => {/**** @description 回调函数接收两个参数* @param {String} fncName 发布的函数名称,例如:onChangeName* @param {any} data 发布传递的数据消息* */ console.log('=msg==', fncName, data)// 通过 useState 的set 函数进行视图更新setName(data)}useEffect(() => {// 订阅事件let token1 = PubSub.subscribe('onChangeName',handleEvents)return () => {PubSub.unsubscribe('onChangeName')  // 卸载时解除订阅// 两种卸载时候取消订阅方案// PubSub.unsubscribe('token1')  // 卸载时解除订阅}}, [])return (<div><h3>组件B</h3><p>组件A传递消息: {name}</p></div>)
}

4、在父组件中使用

import ChildA from './childA'
import ChildB from './childB'
export default function MyPubsub() {return (<div style={{background: 'red', padding: '12px', width: '360px', height: '500px'}}><h2>父组件</h2><ChildA></ChildA><hr />{/* 完全独立的两个子组件 */}<ChildB></ChildB>  </div>)
}

注意:
a、不管是自定义发布订阅器,还是直接使用插件,在组件卸载时候,都有将当前组件的订阅取消,避免过多订阅运行,导致内存溢出
b、使用插件,相对更加方便简洁,只需要关注及时调用 api既可以,不需要注意发布订阅器里面的逻辑
c、要避免多状态,多个发布订阅器存在多组件中,会在出现bug时候造成难以追踪定位问题点;

http://www.yayakq.cn/news/240567/

相关文章:

  • 中贸网做的网站怎么做网站的排名
  • wordpress视频网站主题做建网站
  • 驻马店百牛网站建设网站域名授权怎么做
  • 定制版网站建设详细报价单给非吸公司建设网站
  • 网站开发怎么入驻京东招聘网站评估怎么做
  • 苏州网站建设布局网站改版与优化协议书
  • nginx建设网站教程宁德小程序开发
  • 自适应门户网站模板淘宝美工做倒计时图片网站
  • 单页网站开发费用施工企业安全管理基本情况简介
  • 用英文介绍购物网站杯子电子商务网站的建设
  • 做网站一定要注册公司吗无锡那家网络公司做网站好
  • 网站建设主体设计要求昆明做网站公
  • 网站调试搬家公司电话号码
  • 做任务赚佣金网站有哪些在线免费做网站
  • 手机网站开发技巧阳江今天刚刚发生的重大新闻
  • 广东睿营建设有限公司网站wms仓储管理系统
  • 食品购物网站建设网站开发 百度网盘
  • 中国做木线条的网站影视网站建设策划文案
  • 青白江建设网站中国八大设计院指的是哪些
  • vs2010做网站登陆界面境外网站在国内做镜像
  • 网站添加备案号网站如何强制修改主页 源码
  • 大朗做网站的合肥网站建设佳蓝网络
  • 信息网站怎么做莲湖微网站建设
  • 网站qq 微信分享怎么做的lnmp和wordpress
  • wordpress自动网站地址深圳企业公司有哪些
  • 军事网报名入口专业排名优化工具
  • 开发一个购物app需要多少钱长沙网站seo技术
  • dedecms 网站栏目管理如何做美食的视频网站
  • 网站开发的技术手段有哪些佳木斯市郊区建设局网站
  • 茶叶网站建设哪家seo技术经理