在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、context1. 使用场景设想一个场景,假如我们要给子孙组件传值,应该怎么办呢? 如果使用props一层一层往下 传递的话,特别的繁琐! 更好的办法:使用 2. 使用步骤
const { Provider, Consumer } = React.createContext()
<Provider> <div className="App"> <Child1 /> </div> </Provider>
<Provider value="pink">
<Consumer> {data => <span>data参数表示接收到的数据 -- {data}</span>} </Consumer> 3. 总结
二、props深入1. children 属性children 属性:表示组件标签的子节点。当组件标签有子节点时,props 就会有该属性 children 属性与普通的props一样,值可以是任意值(文本、标签、组件、甚至是函数) 代码如下(示例): function Hello(props) { return ( <div> 组件的子节点:{props.children} </div> ) } <Hello>我是子节点</Hello> 2. props 校验对于组件来说,props 是外部数据的容器,无法保证组件使用者传入什么格式的数据 如果传入的数据格式不对,可能会导致组件内部报错 关键问题:除了语法报错信息之外没有额外的错误提示 代码如下(示例): // 创建的组件 function App(props) { const arr = props.colors const list = arr.map((item, index) => <li key={index}>{item}</li>) return ( <ul>{list}</ul> ) } // 使用组件时 <App colors={19} /> props 校验:允许在创建组件的时候,就指定 props 的类型、格式等 作用:捕获使用组件时因为props导致的错误,给出明确的错误提示,增加组件的健壮性 3. props校验使用步骤
import PropTypes from 'prop-types' function App(props) { return ( <h1>Hi, {props.colors}</h1> ) } App.propTypes = { // 约定colors属性为array类型 // 如果类型不对,则报出明确错误,便于分析错误原因 colors: PropTypes.array } 4. props校验约束规则常见类型: React元素类型: 必填项: 特定结构的对象: // 常见类型 optionalFunc: PropTypes.func, // 必选 requiredFunc: PropTypes.func.isRequired, // 特定结构的对象 optionalObjectWithShape: PropTypes.shape({ color: PropTypes.string, fontSize: PropTypes.number }) 5. props默认值场景:分页组件 → 每页显示条数 作用:给 props 设置默认值,在未传入 props 时生效 function App(props) { return ( <div> 此处展示props的默认值:{props.pageSize} </div> ) } // 设置默认值 App.defaultProps = { pageSize: 10 } // 不传入pageSize属性 <App /> 总结本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注极客世界的更多内容! |
请发表评论