12 组合与继承、CSS Module

组合与继承

  1. 若Container内部有内容,React会在props内部增加children属性
  2. 若Container内部有非元素内容,children:非元素内容
  3. 若Container内部有单个元素内容,children:React元素对象
  4. 若Container内部有多个元素内容,children:[]
  • 打印props
  • 情况2:非元素内容
<Container>666</Container>

在这里插入图片描述

  • 情况3:单个元素内容
<Container><h1>666</h1></Container>

在这里插入图片描述

  • 情况4:多个元素内容
<Container><h1>666</h1><p>888</p>
</Container>

在这里插入图片描述

props

  • JSX还可以通过props传递视图元素
  • JSX本质上都会转成React元素(对象 Object)
  • 视图通过props传递的机制类似Vue的插槽,但React没有slot的概念定义
  • React本身就允许通过props传递任何类型的数据到子组件

React样式

  • CSS Module
  • index.module.css
import styles from './index4.module.css'
// 用变量接收
class Container extends React.Component {render() {console.log(this.props)return (<div className={styles.container}><div className={styles.header}>{this.props.header}</div><div className={styles.main}><div className={styles.left}>{this.props.left}</div><div className={styles.right}>{this.props.right}</div></div></div>)}
}
class Header extends React.Component {render() {return <div>Header</div>}
}
class Left extends React.Component {render() {return <div>Left</div>}
}
class Right extends React.Component {render() {return <div>Right</div>}
}
class App extends React.Component {render() {return (<div><Containerheader={<Header />}left={<Left />}right={<Right />}></Container></div>)}
}
ReactDOM.render(<App />,document.getElementById('app')
)
.container {background: #ccc;text-align: center;
}
.header {height: 50px;line-height: 50px;border: 2px dashed #000;
}
.main {display: flex;
}
.left {width: 20%;background: pink;
}
.right {background: skyblue;flex: 1;
}

多层组合

import styles from './index5.module.css'// 多层组合
// Modal是公共的部分,定制的内容作为children传入
function Modal(props) {return (<div className={styles.wrap}><header className={styles.title}>{props.title}</header><div className="main">{props.children}</div></div>)
}
// 注意函数式 props作为参数传入 不用this来访问props
function Alert(props) {return (<div><Modal title={props.title}><p>{props.mainText}</p></Modal></div>)
}
function LoginModal(props) {return (<div><Modal title={props.title}><form><p>用户名:<input type="text" /></p><p>密码:<input type="password" /></p><p><button>登录</button></p></form></Modal></div>)
}
ReactDOM.render(<div><AlertmainText="显示内容"title="显示modal"/><LoginModal title="登录modal"></LoginModal></div>,document.getElementById('app'))

React目前还没有发现有需要组件继承的需求
因为通过children或者传递视图React元素的方式完全可以解决组件组合的问题太;
props可以传递任何类型的数据,所以组合的方式可以替代继承方案。
逻辑部分需要继承或共用:该部分需要自己去编写逻辑抽离的模块、函数、类,单独进行模块导入使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工具分享 --- tinyPNG,大图片压缩工具

今天自己的写的项目跑在了远程服务器上… 图片加载的速度让人难以接受, 于是各种百度找到了一个在线找到了个图片压缩的网站 TinyPNG 可以看一下压缩的效果…真心不错啊… 网站如下: https://tinypng.com 额…有些大于5M的需要钱,才能压缩… 用系统画图工具…貌似也能压缩… …

Mysql 忘记管理员密码更改

对管理员设置密码第一种方式&#xff1a;#mysqladmin -u root password new-password;#mysqladmin -u root -h localhost password new-password;mysql的选项可以不带空格&#xff0c;有时候带空格是错 第二种方式&#xff1a; set password for rootlocahostPASSWORED(); 第三…

ironic如何支持部署时按需RAID?

ironic如何支持部署时按需RAID&#xff1f; 新浪大神推荐使用element proliant-tools制作deploy image。element proliant-tools会在ipa ramdisk中安装一个rpm包hpssacli&#xff08;HP的RAID管理工具&#xff09;&#xff0c;和一个python module proliantutils&#xff08;里…

14 代码分割之lazy:Suspense与路由懒加载

lazy内置方法 Suspense内置组件 lazy是React提供的懒&#xff08;动态&#xff09;加载组件的方法&#xff0c;React.lazy() 能减少打包体积、延迟加载首屏不需要渲染的组件 依赖内置组件Suspense&#xff1a;给lazy加上loading指示器组件的一个容器组件 Suspense目前只和la…

三年工作的总结

其实开通博客已经有四年之久了,但遗憾的是从来没有认真写过一篇博客,只是在平时会浏览一些大牛写过的博客。 其实我觉得做技术的定期总结自己的经验还是很重要的。 不知不觉参加工作已经三年了,三年时间真的过得很快,想当初带着一腔热血,一个背包走天下,来到上海,从零开始&…

css --- 兄弟选择器

语法: /* 查找后边的一个兄弟元素 */ 兄弟元素 兄弟元素/* 查找后边的所有兄弟元素 */ 兄弟元素 ~ 兄弟元素<head><style>#maindiv {color: red;}#main~div {background-color: #e0e0e0;}</style> </head> <body><div id"main"&g…

面向对象特征:封装、多态 以及 @propetry装饰器

&#xff08;继承补充&#xff09;组合objfun()#对象obj.attrfoo()#对象的属性等于另一个对象什么是组合&#xff1a; A类的对象具备某一个属性&#xff0c;该属性的值是B类的对象基于这种方式就把A类与B类组合到一起对象既能使用A类中的数据与功能&#xff0c;也能使用B类中的…

15 错误边界与使用技巧

错误边界 React16增加防止某个组件的UI渲染错误导致整个应用崩溃子组件发生JS错误&#xff0c;有备用的渲染UI错误边界是组件&#xff0c;只能用class组件来写 错误边界组件捕获错误的时机 渲染时生命周期函数中组件树的构造函数中 getDerivedStateFromError 生命周期函数…

深入探究Spark -- Cluster Manger部署(最常用为YARN实现Task Scheduler)

部署方式有&#xff1a;Standalone&#xff08;Spark的Deploy模块&#xff09;、Mesos、YARN、EC2、LocalSparkContext创建时&#xff0c;通过传入的Master URL不同&#xff0c;创建不同的SchedulerBackend和TaskScheduler&#xff0c;在spark.SparkContext#createTaskSchuster…

es6 --- Promise.all等待多个异步任务执行

项目中遇到一个问题,要用多个http请求,获取数据,然后将获取的数据统一处理… 第一反应想到用promise.all来做… 下面进入主体 // 首先使用promise封装http请求. function getListByDetecttype (params) {return new Promise((resolve, reject) > {let param params ? par…

16 代码分割之错误边界与Suspense和命名导出

代码分割之错误边界与Suspense const Main React.lazy(() > import(./main)) class ErrorBoundary extends React.Component {state {hasError: false,}static getDerivedStateFromError(err) {console.log(getDerivedStateFromError err, err)return {hasError: true}}c…

Python 原生爬虫

Python3 实现游戏主播人气排行榜 from urllib import request import re# 爬取某个游戏主播的人气&#xff08;每个游戏主播的观看人数&#xff09;排行榜 爬虫前奏&#xff1a;明确爬虫目的找到数据对应的网页分析网页的结构找到数据所在的标签位置模拟HTTP请求&#xff0c;向…

Mac 下查看网络端口占用情况

1、Mac 下查看网络端口占用情况 有的时候关闭了服务器&#xff0c;但是端口还是占用&#xff0c;解决的方法是 kill 掉占用该端口的进程。 # 查看 8009 端口的占用情况 $ lsof -i:8009 可以看到&#xff0c;该端口被 id 为 4215 的进程所占用&#xff0c;这个时候直接在命令…

javascript --- 变量提升的理解

看下面一段代码: (function () {var x foo();var foo function foo () {return "foobar";};return x; })();(不许打出来)猜猜返回结果是什么… 答案是 // foo is not a function下面来解释为什么会这样,首先得明白: 1.如果变量声明了但未赋值,则会显示undefined…

17 初探Context的使用场景

context 容器&#xff08;即上下文&#xff09; → 装数据 → 可以传递到程序的多个地方程序在执行时可访问的容器 import styles from ...则css要写module.css&#xff0c;否则无效果&#xff1b; import from ...则css无须写module. &#xff0c;否则无效果 使用 context.j…

分布式监控系统开发【day37】:需求讨论(一)

本节内容 为什么要做监控&#xff1f; 常用监控系统设计讨论监控需求讨论如何实现监控服务器的水平扩展&#xff1f;监控系统架构设计一、为什么要做监控&#xff1f; 熟悉IT监控系统的设计原理开发一个简版的类Zabbix监控系统掌握自动化开发项目的程序设计思路及架构解藕原则…

iOS:练习题中如何用技术去实现一个连线题

一、介绍 本人做的app涉及的是教育行业&#xff0c;所以关于练习题的开发肯定是家常便饭。例如&#xff0c;选择题、填空题、连线题、判断题等&#xff0c;每一种题型都需要技术去实现&#xff0c;没啥多大难度&#xff0c;这里呢&#xff0c;就给出实现连线题的核心代码吧。过…

18 Context与组合的应用场景与使用问题

contextType 指定context类型为创建的上下文&#xff0c;此时不需要用Consumer组件包裹&#xff0c;使用this.context即可访问会向上找最近的上下文并取值最适合的场景&#xff1a;杂乱无章的组件都需要同一些数据&#xff1b;若单纯为了不层层传递属性&#xff0c;使用contex…

http --- 共享加密(对称加密)的几个概念

使用互联网进行数据传输时,可能会产生以下四个问题: 1. 窃听: A向B发送的消息,有可能在传输过程中被X窃听到 2. 假冒: A收到来自B的消息有可能是X冒充的 3. 篡改: A确实收到来自B的消息,但是该消息有可能被X篡改了 4. 事后否认:B确实收到了来自A的消息,但是A是恶意用户,当A像B…

213. House Robber II 首尾相同的偷窃问题

&#xff3b;抄题&#xff3d;&#xff1a; You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed. All houses at this place are arranged in a circle. That means the first house is the neighbor of…