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

3d展示网站源码2024政治时政热点

3d展示网站源码,2024政治时政热点,网站建设数据库,网站一般在哪建设目录 通过 children 属性结合条件渲染通过 children 和 slot 属性实现具名插槽通过 props 实现具名插槽 在 React 中,并没有直接类似于 Vue 中的“插槽”机制(slot)。但是,React 可以通过 props和 children 来实现类似插槽的功能…

目录

  • 通过 children 属性结合条件渲染
  • 通过 children 和 slot 属性实现具名插槽
  • 通过 props 实现具名插槽

在 React 中,并没有直接类似于 Vue 中的“插槽”机制(slot)。但是,React 可以通过 propschildren 来实现类似插槽的功能,允许你将组件的内容进行灵活插入和替换。

通过 children 属性结合条件渲染

通过 children 来传递任意数量的子元素,然后在组件内部通过位置进行条件渲染,从而实现插槽功能。

Layout 组件通过 children 渲染传递给它的所有子元素,而这些子元素可以是任何内容,类似于 Vue 中的默认插槽。虽然在某些情况下,children 已经是一个数组(例如多个子元素的情况),但 React.Children.toArray 会确保你始终获得一个标准化的数组(过滤掉null、undefined等数据)。

//子组件
const Layout = ({ children }) => {children = React.Children.toArray(children);console.log(children,'children')return (<div className="layout"><header>Header</header><main>{children}</main> {/* 这里的 children 就是父组件传递进来的内容 */}<footer>Footer</footer></div>);
}; 
//父组件
const App = () => {return (<Layout><h1>Hello, React!</h1><p>This is the main content of the page.</p></Layout>);
};

打印出children,就是父组件标签里内容编译成的virtualDOM。

在这里插入图片描述

通过 children 和 slot 属性实现具名插槽

在标签上加slot来标记标签

//父组件
root.render(<><DemoOne title="REACT好好玩哦" x={10}><span slot="footer">我是页脚</span><span>哈哈哈哈</span><span slot="header">我是页眉</span></DemoOne></>
); 

子组件根据children属性中的slot来区分插槽

//子组件
const DemoOne = function DemoOne(props) {let { title, x, children } = props;children = React.Children.toArray(children);let headerSlot = [],footerSlot = [],defaultSlot = [];children.forEach(child => {// 传递进来的插槽信息,都是编译为virtualDOM后传递进来的「而不是传递的标签」let { slot } = child.props;if (slot === 'header') {headerSlot.push(child);} else if (slot === 'footer') {footerSlot.push(child);} else {defaultSlot.push(child);}});return <div className="demo-box">{headerSlot}<br /><h2 className="title">{title}</h2><span>{x}</span><br />{footerSlot}</div>;
};

通过 props 实现具名插槽

显式传递 props 来模拟具名插槽,传递不同的内容到特定的插槽位置

const DemoOne = ({ title, x, children, footer, header }) => {return (<div className="demo-box"><h1>{title}</h1><div>{header}</div> {/* 渲染具名插槽 header */}<div>{children}</div> {/* 渲染默认插槽 */}<div>{footer}</div> {/* 渲染具名插槽 footer */}</div>);
};const App = () => {return (<DemoOne title="REACT好好玩哦" x={10} footer={<span>我是页脚</span>} header={<span>我是页眉</span>}><span>哈哈哈哈</span></DemoOne>);
};

在这里插入图片描述

http://www.ds6.com.cn/news/32482.html

相关文章:

  • 河南省人民政府网谷歌seo网站运营
  • 爱站网关键词搜索网上推广渠道有哪些
  • 河北省建设机械协会网站是真的吗网店推广方案范文
  • 做网站卖东西赚钱我是做推广的怎么找客户
  • 深圳龙岗区景点快速优化关键词排名
  • 广东省建设注册执业资格中心网站滕州seo
  • 合肥做网站公司网络营销的策略
  • 自建站电商外贸网站展示型推广
  • 连云港网站建设电话seo外链推广
  • 电子商务网站建设期末试题及答案一站式软文发布推广平台
  • 如何做自己网站云播自己怎么建网站
  • 做网页向网站提交数据今日热点新闻2022
  • 做网站公司-深圳信科竞价推广托管公司价格
  • 做网站好还是做app好销售课程培训视频教程
  • 济宁政府网站建设网站seo最新优化方法
  • 做毕业设计做网站真实数据来源网站制作哪家公司好
  • 网站建设做到哪些内容网站关键词优化排名推荐
  • 网站qq线客服咋做阿里云com域名注册
  • 网站域名使用费用qq群推广平台
  • 做外贸网站的公司广州公司关键词网络推广
  • 海淀石家庄网站建设sem是什么分析方法
  • window做网站的软件下载长沙百度关键词排名
  • 科技公司网站建设方案书模板seo优化个人博客
  • 什么做直播网站百度搜索引擎优化的养成良好心态
  • 网站主题有哪些内容网页设计与制作考试试题及答案
  • php网站开发报告持续优化完善防控措施
  • 网站开发人员需求分析网页seo是什么意思
  • wordpress评论导出免费的电脑优化软件
  • 中国最大的做网站的公司深圳seo优化推广公司
  • 郑州网站开发培训价格公司营销策划方案案例