- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深入理解 React
深⼊理解 React
这是一篇源自官方博客 的文章。
在我看来, React 是较早使用 JavaScript 构建大型、快速的 Web 应用 序的技术
方案。它已经被我们广泛应用于 Facebook 和 Instagram 。
React 众多优秀特征中的其中一部分就是,教会你去重新思考如何构建应用 序。
本文中,我将跟你一起使用 React 构建一个具备有哪些信誉好的足球投注网站功能的产品列表。
注意:
如果你无法看到本页内嵌的代码片段,请确认你不是用 https 协议加载本页
的。
从原型 ( mock )开始
假设我们已经拥有了一个 JSON API 和设计师设计的原型。我们的设计师显然不够
好,因为原型看起来如下:
JSON接口返回数据如下:
[
{category: Sporting Goods, price: $49.99, stocked: true, n
ame: Footba },
{category: Sporting Goods, price: $9.99, stocked: true, na
me: Baseba },
{category: Sporting Goods, price: $29.99, stocked: fa se,
name: Basketba },
{category: E ectronics, price: $99.99, stocked: true, name
: iPod Touch},
{category: E ectronics, price: $399.99, stocked: fa se, na
me: iPhone 5},
{category: E ectronics, price: $199.99, stocked: true, nam
e: Nexus 7}
];
第一步:拆分用户界面为一个组件树
你要做的第一件事是,为所有组件 (及子组件)命名并画上线框图。假如你和设计师
一起工作,也许他们已经完成了这项工作,所以赶紧去跟他们沟通!他们的
Photoshop 图层名也许最终可以直接用于你的 React 组件名。
然而你如何知道哪些才能成为组件?想象一下,当你创建一些函数或对象时,用到一
些类似的技术。其中一项技术就是单一功能原则,指的是,理想状态下一个组件应该
只做一件事,假如它功能逐渐变大就需要被拆分成更小的子组件。
由于你经常需要将一个JSON数据模型展示给用户,因此你需要检查这个模型结构是
否正确以便你的 UI (在这里指组件结构)是否能够正确的映射到这个模型上。这是
因为用户界面和数据模型在 信息构造 方面都要一致,这意味着将你可以省下很多将
UI 分割成组件的麻烦事。你需要做的仅仅只是将数据模型分隔成一小块一小块的组
件,以便它们都能够表示成组件。
由此可见,我们的 app 中包含五个组件。下面我已经用斜体标示出每个组件对应的
数据。
1. FilterableProductTable (橘色): 包含整个例子的容器
2. SearchBar (蓝色): 接受所有 用户输入 ( user input )
. ProductTable (绿色): 根据 用户输入 ( user input ) 过滤和展示 数
据集合 ( data collection )
4. ProductCategoryRow (青色): 为每个 分类 ( category ) 展示一列表
头
5. ProductRow (红色): 为每个 产品 ( product ) 展示一列
如果你仔细观察 ProductTab e ,你会发现表头 (包含“ Name ”和“ Price ”标
签)并不是单独的组件。这只是一种个人偏好,也有一定的争论。在这个例子当中,
我把表头当做 ProductTab e 的一部分,因为它是渲染“数据集合”的一份子,这也
是 ProductTab e 的职责。但是,当这个表头变得复杂起来的时候 (例如,添加排
序功能),就应该单独地写一个 ProductTab eHeader 组件。
既然我们在原型当中定义了这个组件,让我们把这些元素组成一棵树形结构。这很简
单。被包含在其它组件中的组件在属性机构中应该是子级:
Fi terab eProductTab e
文档评论(0)