作者:龙鹰的天涯 | 来源:互联网 | 2023-08-17 20:51
看完React官网的核心知识点,思考如何应用在实际的项目中呢?第一步:先将UI设计图划分成各个React组件,划分的规则可以根据最小功能单位,或者是根据JSON数据模型
 看完React官网的核心知识点,思考如何应用在实际的项目中呢?
第一步:先将UI设计图划分成各个React组件,划分的规则可以根据最小功能单位,或者是根据JSON数据模型。
第二部:通过React写静态页面结构。
第三步:添加动态交互功能。
总结:子组件的数据源来自父组件,边界情况下会出现undefined,所以在渲染子组件的之前需要判断从父组件传来的数据是否是有效数据,如果不是直接return null;
本代码思路就是顶层的父组件处理所有的业务逻辑。
class Item extends React.Component {
render() {
return (
{this.props.name} |
{this.props.price} |
)
}
}
function Category(props){
const categoryItems = props.category
if(!categoryItems.length) {
return null
}
return (
{categoryItems[0].category} |
{categoryItems.map((item)=> {
return (
)
})}
)
}
class Table extends React.Component {
render() {
let sporting_goods = [],
electrOnics= []
const products = this.props.products
for(let i=0; i
if(products[i].category === 'Sporting Goods') {
sporting_goods.push(products[i])
} else {
electronics.push(products[i])
}
}
return(
)
}
}
class Search extends React.Component {
render() {
return (
)
}
}
class ProductFilter extends React.Component {
constructor(props) {
super(props)
this.state = {
value: '',
isStock: false
}
this.handleChange = this.handleChange.bind(this)
}
handleChange(e) {
const value = (e.target.type === 'checkbox') ? e.target.checked : e.target.value
const name = e.target.name
this.setState({
[name]: value
})
}
render() {
let ret = []
if(this.state.value) {
if(this.state.isStock){
PRODUCTS.forEach((item) => {
if(!item.stocked) {
return
}
if(item.name.toUpperCase().indexOf(this.state.value.toUpperCase()) >= 0) {
ret.push(item)
}
})} else {
PRODUCTS.forEach((item) => {
if(item.name.toUpperCase().indexOf(this.state.value.toUpperCase()) >= 0) {
ret.push(item)
}})
}
} else {
ret = PRODUCTS
}
return (
)
}
}
ReactDOM.render(, document.getElementById('root'))
const PRODUCTS = [
{category: 'Sporting Goods', price: '$49.99', stocked: true, name: 'Football'},
{category: 'Sporting Goods', price: '$9.99', stocked: true, name: 'Baseball'},
{category: 'Sporting Goods', price: '$29.99', stocked: false, name: 'Basketball'},
{category: 'Electronics', price: '$99.99', stocked: true, name: 'iPod Touch'},
{category: 'Electronics', price: '$399.99', stocked: false, name: 'iPhone 5'},
{category: 'Electronics', price: '$199.99', stocked: true, name: 'Nexus 7'}
] 
推荐阅读
-
本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ...
[详细]
蜡笔小新 2024-12-27 16:27:52
-
本文介绍如何使用 Scala 以 UTF-8 编码方式读取属性文件,并实现属性文件的克隆功能。通过这种方式,可以确保配置文件在多线程环境下的一致性和高效性。 ...
[详细]
蜡笔小新 2024-12-26 08:25:19
-
-
本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ...
[详细]
蜡笔小新 2024-12-28 09:46:23
-
本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ...
[详细]
蜡笔小新 2024-12-28 08:39:55
-
本文介绍了如何利用JavaScript或jQuery来判断网页中的文本框是否处于焦点状态,以及如何检测鼠标是否悬停在指定的HTML元素上。 ...
[详细]
蜡笔小新 2024-12-27 21:33:33
-
本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ...
[详细]
蜡笔小新 2024-12-27 15:06:12
-
本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ...
[详细]
蜡笔小新 2024-12-27 13:14:08
-
本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ...
[详细]
蜡笔小新 2024-12-27 10:28:40
-
本文详细探讨了在Android 8.0设备上使用ChinaCock的TCCBarcodeScanner进行扫码时出现的应用闪退问题,并提供了解决方案。通过调整配置文件,可以有效避免这一问题。 ...
[详细]
蜡笔小新 2024-12-27 10:10:31
-
本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ...
[详细]
蜡笔小新 2024-12-26 22:04:19
-
学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ...
[详细]
蜡笔小新 2024-12-26 20:04:36
-
本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ...
[详细]
蜡笔小新 2024-12-26 17:55:52
-
本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ...
[详细]
蜡笔小新 2024-12-26 16:36:34
-
在维护公司项目时,发现按下手机的某个物理按键后会激活相应的服务,并在屏幕上模拟点击特定坐标点。本文详细介绍了如何使用ADB Shell Input命令来模拟各种输入事件,包括滑动、按键和点击等。 ...
[详细]
蜡笔小新 2024-12-26 13:43:24
-
根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ...
[详细]
蜡笔小新 2024-12-26 10:42:40
-