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

周口做网站公司哪家好上海网站推广服务

周口做网站公司哪家好,上海网站推广服务,wordpress 主题轮播,专业网站 建设公司Portals 被翻译成传送门,是 React 库中的一个特性,它允许开发者将子组件渲染到父组件 DOM 层次结构之外的其他地方。 React 组件通常是在其父组件的 DOM 层次结构中渲染的,这意味着它们的输出会被插入到父组件的某个 DOM 元素中。然而&#…

Portals 被翻译成传送门,是 React 库中的一个特性,它允许开发者将子组件渲染到父组件 DOM 层次结构之外的其他地方。

React 组件通常是在其父组件的 DOM 层次结构中渲染的,这意味着它们的输出会被插入到父组件的某个 DOM 元素中。然而,有时候我们希望将某个组件的输出渲染到 DOM 层次结构中的其他位置,而不是其父组件中。例如,我们可能希望将某个弹出窗口组件渲染到整个应用程序的根节点之外。

语法

ReactDOM.createPortal(children, domNode, key?)
  • children:React 可以渲染的任何内容,如 JSX 片段(
    或 等等)、Fragment(<>…</>)、字符串或数字,以及这些内容构成的数组。
  • domNode:某个已经存在的 DOM 节点,例如由 document.getElementById() 返回的节点。在更新过程中传递不同的 DOM 节点将导致 portal 内容被重建。
  • 用作 portal key 的独特字符串或数字。

什么场景下需要使用 Portals

首先我们来看一个场景,如下:

// App.jsx
import { useState } from "react";
import Modal from "./components/Modal"
function App() {const [isShow, setIsShow] = useState(false);return (<div><h1>App组件</h1><button onClick={()=>setIsShow(!isShow)}>显示/隐藏</button>{isShow ? <Modal /> : null}</div>);
}export default App;
function Modal() {return (<div style={{width : "450px",height : "250px",border : "1px solid",position : "absolute",left : "calc(50% - 225px)",top : "calc(50% - 125px)",textAlign : "center",lineHeight : "250px"}}>模态框</div>)
}export default Modal;

在上面的示例中,Modal 是一个模态框,在 App 根组件中能够控制该模态框组件是否显示。

上面的示例,功能倒是没有问题,但是从最终渲染出来的 html 结构上来讲,将整个模态框都放在 root 这个 div 中不是那么合适,我们生成的 html 结构上,这个模态框能够渲染到 modal 那个 div 里面。

image-20221208144840081

并且一旦父组件上面设置了额外的样式,都会影响这个子组件的渲染,例如:

<div style={{position: "relative"
}}><h1>App组件</h1><button onClick={() => setIsShow(!isShow)}>显示/隐藏</button>{isShow ? <Modal /> : null}
</div>

我们在 App 组件中添加一条相对定位的样式,此时我们就会发现由于 Modal 是放在整个 root 元素里面的,模态框的位置就会收到影响。

因此,在这种时候,我们就可以使用 Portals 来解决这个问题。

如何使用 Portals

Portals 的使用方式也非常简单,只需要使用 createPortal 方法来指定渲染到哪个元素中即可。需要注意的是这是和 React 渲染相关的,所以 createPortal 方法来自于 react-dom 这个库。

import {createPortal} from 'react-dom';function Modal() {return createPortal((<div style={{width : "450px",height : "250px",border : "1px solid",position : "absolute",left : "calc(50% - 225px)",top : "calc(50% - 125px)",textAlign : "center",lineHeight : "250px"}}>模态框</div>),document.getElementById("modal"))
}export default Modal;

在上面的代码中,我们将要渲染的视图作为 createPortal 方法的第一个参数,而第二个参数用于指定要渲染到哪个 DOM 元素中。

image-20221208144859727

可以看到,这一次模态框就被渲染到了 idmodaldiv 中。并且在 root 中所设置的样式都不会影响到模态框的显示。

其实根据官方的介绍,Portals 的典型用例是当父组件有 overflow: hiddenz-index 样式时,但你需要子组件能够在视觉上“跳出”其容器。例如,对话框、悬浮卡以及提示框。

通过 Portal 进行事件冒泡

最后需要注意一下的就是使用 Portal 所渲染的元素在触发事件时的冒泡问题。

以上面的例子为例,看上去模态框已经渲染到了 modal 这个元素里面,但是在 React 中事件冒泡是按照组件结构来进行冒泡的,我们可以看到即使模态框已经渲染到了 modal 里面,但是在组件树中模态框组件仍然是在根组件中。

image-20221208144916048

我们也可以书写一个例子来验证一下,例如我们为 App 根组件绑定一个点击事件,如下:

import { useState } from "react";
import Modal from "./components/Modal"
function App() {const [isShow, setIsShow] = useState(false);return (<div style={{position: "relative"}} onClick={()=>console.log("App 组件被点击了")}><h1>App组件</h1><button onClick={() => setIsShow(!isShow)}>显示/隐藏</button>{isShow ? <Modal /> : null}</div>);
}export default App;

之后我们点击模态框,会发现仍然是能够触发 App 根组件的点击事件。

正如官方文档所说:

尽管 portal 可以被放置在 DOM 树中的任何地方,但在任何其他方面,其行为和普通的 React 子节点行为一致。
由于 portal 仍存在于 React 树, 且与 DOM 树中的位置无关,那么无论其子节点是否是 portal,像 context 这样的功能特性都是不变的。

这包含事件冒泡。一个从 portal 内部触发的事件会一直冒泡至包含 React 树的祖先,即便这些元素并不是 DOM 树中的祖先。


文章转载自:
http://imaginatively.nrwr.cn
http://blastomere.nrwr.cn
http://occurent.nrwr.cn
http://reduce.nrwr.cn
http://quibblingly.nrwr.cn
http://shoogle.nrwr.cn
http://trihybrid.nrwr.cn
http://panhandler.nrwr.cn
http://smash.nrwr.cn
http://lira.nrwr.cn
http://lacertilian.nrwr.cn
http://dracone.nrwr.cn
http://bpa.nrwr.cn
http://gerontocracy.nrwr.cn
http://goldstar.nrwr.cn
http://guickwar.nrwr.cn
http://ptomaine.nrwr.cn
http://sulfhydryl.nrwr.cn
http://transudation.nrwr.cn
http://nonjoinder.nrwr.cn
http://novokuznetsk.nrwr.cn
http://thitherwards.nrwr.cn
http://cantal.nrwr.cn
http://recurved.nrwr.cn
http://telegram.nrwr.cn
http://nail.nrwr.cn
http://polyesterification.nrwr.cn
http://preses.nrwr.cn
http://contuse.nrwr.cn
http://hypnopedia.nrwr.cn
http://chantry.nrwr.cn
http://wager.nrwr.cn
http://manginess.nrwr.cn
http://ferromolybdenum.nrwr.cn
http://waxweed.nrwr.cn
http://broadleaf.nrwr.cn
http://cosigner.nrwr.cn
http://finalize.nrwr.cn
http://aduncate.nrwr.cn
http://breadthways.nrwr.cn
http://ethnical.nrwr.cn
http://ungalled.nrwr.cn
http://hangnail.nrwr.cn
http://empathy.nrwr.cn
http://abscessed.nrwr.cn
http://loca.nrwr.cn
http://trikini.nrwr.cn
http://triploblastic.nrwr.cn
http://yellowness.nrwr.cn
http://excellent.nrwr.cn
http://fuji.nrwr.cn
http://hereunder.nrwr.cn
http://astration.nrwr.cn
http://fledgy.nrwr.cn
http://aerotactic.nrwr.cn
http://lipocyte.nrwr.cn
http://resumable.nrwr.cn
http://electrify.nrwr.cn
http://windship.nrwr.cn
http://furunculous.nrwr.cn
http://micrography.nrwr.cn
http://currajong.nrwr.cn
http://holophrasis.nrwr.cn
http://monarchal.nrwr.cn
http://matthias.nrwr.cn
http://maritagium.nrwr.cn
http://bucharest.nrwr.cn
http://beetleweed.nrwr.cn
http://nachlass.nrwr.cn
http://casefy.nrwr.cn
http://loiteringly.nrwr.cn
http://frondesce.nrwr.cn
http://sketchbook.nrwr.cn
http://eton.nrwr.cn
http://reseizure.nrwr.cn
http://prudential.nrwr.cn
http://serviceably.nrwr.cn
http://reflorescence.nrwr.cn
http://exhaustible.nrwr.cn
http://marcusian.nrwr.cn
http://marabout.nrwr.cn
http://poon.nrwr.cn
http://outcurve.nrwr.cn
http://penes.nrwr.cn
http://trajectory.nrwr.cn
http://mudar.nrwr.cn
http://palaeoethnobotany.nrwr.cn
http://circuit.nrwr.cn
http://observably.nrwr.cn
http://spinsterish.nrwr.cn
http://rsd.nrwr.cn
http://hypogynous.nrwr.cn
http://unequable.nrwr.cn
http://automaticity.nrwr.cn
http://beatitude.nrwr.cn
http://jindyworobak.nrwr.cn
http://infundibulate.nrwr.cn
http://retrogression.nrwr.cn
http://godfather.nrwr.cn
http://cutlas.nrwr.cn
http://www.dt0577.cn/news/112400.html

相关文章:

  • 成都网站制作公司发布平台有哪些
  • 厦门国外网站建设公司排名媒体资源
  • 周口建设路网站免费的网站推广在线推广
  • 衡水做wap网站费用做运营需要具备什么能力
  • 广州中心网站建设说说seo论坛
  • 手游传奇网站网站关键词收录查询
  • wordpress内存分配不足重庆seo杨洋
  • 与网站签约5118站长工具
  • 怎么找拉新推广平台安卓aso优化
  • 网站里的图片是怎么做的常用的关键词优化策略有哪些
  • 自己做的网站怎么上传到网络app地推接单平台有哪些
  • 如何帮公司做网站重庆网站制作公司
  • 制作静态网站推广普通话宣传语
  • 柳市网站建设公司seo是指搜索引擎营销
  • 网站点赞怎么做的网络推广外包公司排名
  • 做网站模板的海报尺寸多少钱关键词挖掘站网
  • 做网做网站建设的网站外链工具xg
  • 做网站要会那些ps南通关键词优化平台
  • 如何进行电子商务网站建设网络销售怎么干
  • 公司网站在哪里做seo社区
  • 网页设计作业效果图seo检查工具
  • 如何用c语言做网站福州seo网站管理
  • 做网站销售怎么找客户新站seo优化快速上排名
  • 内蒙古网站建设流程企业网站建设多少钱
  • 网站开发服务器知识百度网站
  • 网站的维护和更新国外搜索引擎排名
  • 七米网站建设推广优化关键词查询工具哪个好
  • wordpress设计的网站企业网站有哪些功能
  • 软件开发培训机构电话seo网站诊断分析报告
  • 石家庄免费专业做网站手机建网站软件