React学习笔记16-属性props
1.属性的定义
2.属性的特点
3.属性的用法
import React, { Component } from 'react'
import Navbar from './Navbar'
export default class App extends Component {
state = {
//只能内部自己使用,外部无法改变
}
render() {
//上面父组件传来的一个对象
var obj = {
title: '测试',
leftshow: false
}
return (
<div>
<h2>首页</h2>
<Navbar title="首页" leftshow={false} ></Navbar>
<h2>列表</h2>
<Navbar title="列表" leftshow={true} rightshow={true}></Navbar>
<h2>购物车</h2>
{/* 如果对象里面的属性和组件的属性key一样可以用拓展运算符直接结构obj放入组件 */}
<Navbar title="购物车" {...obj}></Navbar>
</div>
)
}
}
import React, { Component } from 'react'
import propTypes from "prop-types"
export default class Navbar extends Component {
//a=100对象属性
state = {
//只能内部自己使用,外部无法改变
}
//用static修饰属性就是类属性
static propTypes = {
title: propTypes.string,
leftshow: propTypes.bool,
rightshow: propTypes.bool,
}
//用static修饰属性就是类属性
static defaultProps = {
//属性默认值
leftshow: true,
rightshow: true,
title: ''
}
//属性是父组件传过来的,this.props
render() {
console.log(propTypes)
let { title, leftshow, rightshow } = this.props
return (
<div style={{ display: 'flex' }}>
{leftshow && <button>返回</button>}
{/* <div>{ this.props.title}</div> */}
<div>{title}</div>
{rightshow && <button>Home</button>}
</div>
)
}
}
// Navbar.defalutProps={
// leftshow:false,
// rightshow:true,
// title:''
// }
/* Navbar.propTypes = {
title: propTypes.string,
leftshow: propTypes.bool,
rightshow: propTypes.bool,
} *///类属性
/*
给组件类加上一个propTypes属性在里面使用prop-types模块封装好的方法即可
验证属性
*/
import React, { Component } from 'react'
import Navbar from './Navbar'
import Sidebar from './Sidebar'
export default class App extends Component {
render() {
return (
<div>
{/* 类组件 */}
<Navbar title="导航"></Navbar>
{/* 函数式组件 */}
<Sidebar bg="yellow" position="left"></Sidebar>
</div>
)
}
}
import React from 'react'
import propTypes from "prop-types"
export default function Sidebar(props) {
console.log(props)
let { bg, position } = props
let obj = { backgroundColor: bg, position: "fixed" }
let obj1 = { right: 0 }
let obj2 = { left: 0 }
// eslint-disable-next-line eqeqeq
position == 'right' ? obj = { ...obj1, ...obj } : obj = { ...obj2, ...obj }
return (
<div style={obj}>
<ul>
<li>11111</li>
<li>11111</li>
<li>11111</li>
<li>11111</li>
<li>11111</li>
<li>11111</li>
<li>11111</li>
<li>11111</li>
</ul>
</div>
)
}
//Sidebar.defaultProps 默认属性
Sidebar.defaultProps = {
bg: 'red',
position: 'fixed'
}
//Sidebar.propTypes 属性验证
Sidebar.propTypes = {
bg: propTypes.string,
position: propTypes.string
}
//用static修饰属性就是类属性
static defaultProps = {
//属性默认值
leftshow: true,
rightshow: true,
title: ''
}
在函数组件中,通过 函数名.defaultProps来设置属性的默认值
import React from 'react'
export default function Sidebar(props) {
console.log(props)
let { bg, position } = props
let obj = { backgroundColor: bg, position: "fixed" }
let obj1 = { right: 0 }
let obj2 = { left: 0 }
// eslint-disable-next-line eqeqeq
position == 'right' ? obj = { ...obj1, ...obj } : obj = { ...obj2, ...obj }
return (
<div style={obj}>
<ul>
<li>11111</li>
<li>11111</li>
<li>11111</li>
<li>11111</li>
<li>11111</li>
<li>11111</li>
<li>11111</li>
<li>11111</li>
</ul>
</div>
)
}
//Sidebar.defaultProps 默认属性
Sidebar.defaultProps={
bg:'red',
position:'fixed'
}
4).设置属性的类型验证,可以通过设置属性的类型验证来限制属性的类型。
注意在进行类型验证时需要先导入React自带的prop-types
import propTypes from "prop-types"
同样类组件是通过静态属性propTypes来设置类型验证
static propTypes = {
title: propTypes.string,
leftshow: propTypes.bool,
rightshow: propTypes.bool,
}
函数组件是通过组件名.propTypes来设置类型验证
import React from 'react'
import propTypes from "prop-types"
export default function Sidebar(props) {
console.log(props)
let { bg, position } = props
let obj = { backgroundColor: bg, position: "fixed" }
let obj1 = { right: 0 }
let obj2 = { left: 0 }
// eslint-disable-next-line eqeqeq
position == 'right' ? obj = { ...obj1, ...obj } : obj = { ...obj2, ...obj }
return (
<div style={obj}>
<ul>
<li>11111</li>
<li>11111</li>
<li>11111</li>
<li>11111</li>
<li>11111</li>
<li>11111</li>
<li>11111</li>
<li>11111</li>
</ul>
</div>
)
}
//Sidebar.defaultProps 默认属性
Sidebar.defaultProps = {
bg: 'red',
position: 'fixed'
}
//Sidebar.propTypes 属性验证
Sidebar.propTypes = {
bg: propTypes.string,
position: propTypes.string
}
React学习笔记16-属性props的更多相关文章
- react学习笔记_03-组件&props
组件 & Props的学习 组件允许你将 UI 拆分为独立可复用的代码片段,并对每个片段进行独立构思. 组件,从概念上类似于 JavaScript 函数.它接受任意的入参(即 “props”) ...
- React学习笔记 - 组件&Props
React Learn Note 4 React学习笔记(四) 标签(空格分隔): React JavaScript 三.组件&Props 组件可以将UI切分成一些独立的.可复用的部件,这样你 ...
- react学习笔记1--基础知识
什么是react A JAVASCRIPT LIBRARY FOR BUILDING USER INTERFACES[React是一个用于构建用户界面的JavaScript库.] React之所以快, ...
- React学习笔记(一)- 入门笔记
React入门指南 作者:狐狸家的鱼 本文链接:React学习笔记 GitHub:sueRimn 1.组件内部状态state的修改 修改组件的每个状态,组件的render()方法都会再次运行.这样就可 ...
- React学习笔记(六)事件处理
React学习笔记(六) 五.事件处理 React事件绑定属性的命名采用驼峰写法,不同于传统DOM全部小写. 如果采用JSX的语法,事件函数需要用大括号{}包裹函数名,不同于传统DOM字符串小括号的方 ...
- React学习笔记(五)State&声明周期
React学习笔记(五) 四.State&声明周期 可以为组件添加"状态(state)".状态与属性相似,但是状态是私有的,完全受控于当前组件. 局部状态就是只能用于类(定 ...
- React学习笔记 - JSX简介
React Learn Note 2 React学习笔记(二) 标签(空格分隔): React JavaScript 一.JSX简介 像const element = <h1>Hello ...
- Ext.Net学习笔记16:Ext.Net GridPanel 折叠/展开行
Ext.Net学习笔记16:Ext.Net GridPanel 折叠/展开行 Ext.Net GridPanel的行支持折叠/展开功能,这个功能个人觉得还说很有用处的,尤其是数据中包含图片等内容的时候 ...
- SQL反模式学习笔记16 使用随机数排序
目标:随机排序,使用高效的SQL语句查询获取随机数据样本. 反模式:使用RAND()随机函数 SELECT * FROM Employees AS e ORDER BY RAND() Limit 1 ...
- React学习笔记(七)条件渲染
React学习笔记(七) 六.条件渲染 使用if或条件运算符来创建表示当前状态的元素. 可以使用变量来存储元素.比如: let button = null; if (isLoggedIn) { but ...
随机推荐
- 一张表实现类某音的视频"评论回复"功能
前言 现如今,不管是哪种类型的应用,评论区都少不了.从工具类的到媒体信息流类的,评论留言都是最基本的互动环节.比如抖音短视频下,针对视频每个用户都可以发表自己的观点:而针对用户的评论,其他的用户又可 ...
- 初始elasticSearch
elasticSearch 大致印象 为什么用? mysql更擅长于crud等操作,当一张表达到百万级别时,检索速度过慢 es检索速度快 基本概念 Index索引(两层意思) 动词:类似mysql的i ...
- java发送http请求(jquery发送http请求,前后端看这一篇文章够了,很完整)
为什么写这篇博客? 1.目前很多系统使用了微服务架构,那么各个微服务之间进行内部通信一般采用http协议的方式,springcloud中提供了ribbon,feign,openFeign等组件. 但是 ...
- python 镜像
https://pypi.douban.com/simple/ 豆瓣源 pip install -i https://pypi.douban.com/simple/ pymysql # pymys ...
- OpenUSD联盟:塑造元宇宙的3D未来
一.引言 近日,美国3D内容行业的五家主要公司苹果.英伟达.皮克斯.Adobe和Autodesk联合成立了OpenUSD联盟(AOUSD).这一联盟的成立标志着元宇宙领域的一次重要合作,旨在制定元宇宙 ...
- Tcpdump 使用指南
论网络数据包的分析,我首选wireshark,因为图形化界面直观明了.但如果遇到没有图形化显示的Linux环境,那么此时会使用tcpdump该是一件多么美好的事情. 网上关于tcpdump的介绍很多, ...
- docker网络 bridge 与overlay 模式
转载请注明出处: 1.bridge网络模式 工作原理: 在Bridge模式中,Docker通过创建一个虚拟网络桥接器(bridge)将容器连接到主机上的物理网络接口.每个容器都会被分配一个IP地址, ...
- 春秋云镜像-CVE-2022-0788
准备: 攻击机:win10. 靶机:春秋云镜像-CVE-2022-0788. 写这个的时候在网上想查找下该漏洞的利用方式,没有找到相关的资料,因此记录下自己通过这个靶场的poc与exp. curl ' ...
- C#程序配置读写例子 - 开源研究系列文章
今天讲讲关于C#的配置文件读写的例子. 对于应用程序的配置文件,以前都是用的ini文件进行读写的,这个与现在的json类似,都是键值对应的,这次介绍的是基于XML的序列化和反序列化的读写例子.对于in ...
- DDD实践:实现基于快照机制的变更追踪
王有志,一个分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群:共同富裕的Java人 去年我们在重构项目中落地了DDD,当时花了点时间研究了下阿里巴巴大淘宝技术发布的<阿里技术专家详解 ...