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

个人网站用主机做服务器有了域名如何建立网站

个人网站用主机做服务器,有了域名如何建立网站,企业如何实现高端网站建设,石家庄网站开发建设需求: 在一个页面下有多个子tab在某些tab 下,或者父节点的数据更新的时候,其他子tab 或者父节点也要同步更新 进程: 正常情况下会把所有用到的数据都移动到父节点,修改行为也都放在父节点但如果这样的话父节点的数据…

需求:

  • 在一个页面下有多个子tab
  • 在某些tab 下,或者父节点的数据更新的时候,其他子tab 或者父节点也要同步更新

进程:

  • 正常情况下会把所有用到的数据都移动到父节点,修改行为也都放在父节点
  • 但如果这样的话父节点的数据会非常的多,而且有可能只是某两个子节点的数据需要更新,这就很麻烦
  • 换一个思路,所有的数据都放在各自子节点但是,在某个变化发生的时候,触发一下更新逻辑
  • 那又回到之前的那个问题了,需要每一个子节点都传入对应的触发函数
  • 再换一个逻辑,增加一个全局的hook 并绑定上对应的事件,在你想要触发更新的时候调用一下这个hook 行为,如果有绑定的事件的话,就会触发对应事件
//eventhook
type eventName = string | Symbolconst eventMap = new Map<eventName, Array<Function>>()const addListenerByName = (name: eventName, func: Function) => {if (typeof func !== 'function') {return ;}const listeners = eventMap.get(name) || []if (!listeners.includes(func)) {eventMap.set(name, [...listeners, func])}
}const removeListenersByName = (name: eventName, func: Function) => {const listeners = [...(eventMap.get(name) || [])]eventMap.set(name, listeners.filter(f => f !== func))
}const triggerEventByName = (name: eventName) => {const listeners = eventMap.get(name) || []listeners.forEach(f => f())
}type useEventReturn = {addListener: (func: Function) => () => void, // 调用返回的Function会remove监听removeListeners: (func: Function) => void,triggerEvent: () => void,
}
/*** 记得清除副作用* @param evenetName* @returns*/
export const useEvent = (name: eventName = '@@init'): useEventReturn => {return {addListener: func => {addListenerByName(name, func)return () => removeListenersByName(name, func);},removeListeners: func => removeListenersByName(name, func),triggerEvent: () => triggerEventByName(name),};
}
  • 使用的时候 export 一个固定的名字 export const UPDATEUSERDATAEVENTNAME = Symbol('event_name')
  • use 这个hook const { addListener } = useEvent(UPDATEUSERDATAEVENTNAME)
  • 在需要被监听的地方在初始化的时候加入对应的监听逻辑
useEffect(() => addListener(() => actionRef.current?.reload()), [])
  • 在需要触发这个监听逻辑的地方加入const { triggerEvent } = useEvent(UPDATEUSERDATAEVENTNAME)
  • 并触发这个监听
useEffect(() => {triggerEvent()}, [userId] )
  • 这个做法的好处是就不需要往子组建传一堆东西了,而且也做到了更好的解耦

拓展

  • 在使用这个方法的时候需要一个全局唯一的名字所以用到了 Symbol
  • Symbol是一个绝对唯一的常亮,极端的例子 Symbol(“test”) != Symbol(“test”)
http://www.mmbaike.com/news/53032.html

相关文章:

  • 常州建设工程监理员挂证网站企业门户网站模板
  • 杭州外贸网站建设公司排名站长之家关键词查询
  • 自己有网站做点什么首页关键词优化价格
  • 企业公司网站建设十大门户网站
  • 电子商务网站建设感想怎样进入12345的公众号
  • 哪有做网站的定单昆明网站seo优化
  • 华为手机网站建设策划书怎样优化网络
  • 做网站标题图片大小新网域名
  • 成都开发网站建设北京做的好的seo公司
  • 上海网站设计大连网站制作建设公司
  • 小型建筑公司有哪些seo在线短视频发布页
  • 一个主机可以做几个网站轻松seo优化排名
  • 做网站用什么框架微商怎么引流被加精准粉
  • 八年级信息上册如何做网站全球最受欢迎的网站排名
  • 过界女主个人做网站的长沙专业竞价优化公司
  • 网络推广是做什么的对seo的认识和理解
  • 做茶评的网站四平网站seo
  • 真正免费的网站建站平台排名相亲网站排名前十名
  • 成熟网站开发单位百度关键词竞价查询系统
  • 做网站编辑好还是新媒体编辑seo文章排名优化
  • 网站建设方案文本模板网站建设方案设计书
  • 有哪个网站做正品港货江苏网页设计
  • 合肥有没有做网站的单位营销型网站建设设计
  • 重庆网站维护公司网络科技公司经营范围
  • 百度站长怎么做网站维护站长统计入口
  • 做投资类网站服务器淄博信息港聊天室网址
  • 新疆示范工程建设服务平台网站策划营销推广方案
  • php网站建设百度站长工具怎么用
  • 网站建设学习步骤长春网站建设方案优化
  • 怎么做汽车网站推广方案营销管理系统