文档页面地址:https://doc.react-china.org/docs/thinking-in-react.html 该文档只给了具体实现思路,下面是我实现的代码. 初学react,如果有写的不规范的地方,望大家多多指正! FilterableProductTable (橙色): 包含了整个例子 SearchBar (蓝色): 接受所有的用户输入 ProductTable (绿色): 根据用户输入过滤并展示数据集合 ProductCategoryRow (绿松石色): 展示每个分类的标题…
在我们的看来,React是使用js创建大型快速网站应用的首要方法.它在Facebook和Instagram的使用已经为我们展现了它自己. React的一个很好的地方就在于当你创建应用的时候它使你思考如何创建.在这篇文档里,我们会带着你使用React创建一个查询产品数据表的流程. 以一个仿制品开始 想象我们已经有了一个JSON接口和一个设计师设计的仿制品.它的样子就像这样: 我们的JSON接口返回的数据就像这样: [ {category: "Sporting Goods", price:…
高阶组件(HOC)是React里的高级技术为了应对重用组件的逻辑.HOCs本质上不是React API的一部分.它是从React的组合性质中显露出来的模式. 具体来说,一个高阶组件就是一个获取一个组件并返回一个组件的函数. const EnhancedComponent = higherOrderComponent(WrappedComponent); 然而一个组件将props转变为UI,一个高阶组件将一个组件转变为另外一个组件. HOCs在第三方React库里也是有的,就像Redux里的con…
微软:https://view.officeapps.live.com/op/view.aspx?src=(输入你的文档在服务器中的地址):…
最新新开发的这个项目需要使用word文档并要求能在前端页面上带格式展示,由于项目不是内部使用,所以不考虑插件类的处理模式,都必须要本地处理完成,前端不需要做什么更新或者说安装就能直接访问,类似于百度文库这种. 首先想到的是JSP能不能直接显示word文档呢? 然后找了很多资料,逛了很多论坛,发现很多人说可以,只要在处理的时候页面头上加上<%@page contentType="application/msword;charset=GBK" %> ,不知是我水平不够,还是有什…
React是一个灵活的可以用于各种不同项目的框架,你可以用它来写新应用,你也可以逐步将它引进已有的代码库而不用重写整个项目. 试用React 如果你想玩一玩React,那么就去CodePen上试一试.尝试一下Hello World的React例子.不需要安装任何东西,只是修改代码然后查看结果. 如果你更喜欢在本地编辑,那么你也可以下载此文件,修改它,然后在本地用浏览器打开.但是它会做一个很慢的运行时代码转换,所以不要像这样在产品中使用. 创建一个单页应用 创建React应用这个项目是一个最好的方…
一.快速入门1. 查看集群的健康状况http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 状态值说明 Green - everything is good (cluster is fully functional),即最佳状态Yellow - all data is available but some replicas are not yet allocated (cluster is…
HTML表单元素和 React里的其他DOM元素有些不同,因为它们会保留一些内部的状态.举个例子,这个普通的表单接受唯一的name值: <form> <label> Name: <input type="text" name="name" /> </label> <input type="submit" value="Submit" /> </form>…
Refs 提供了一种方式,用于访问在 render 方法中创建的 DOM 节点或 React 元素. 在标准的React数据流中,props是使得父组件和子组件之间交互的唯一方式.你通过props重新渲染子组件.然而,有些情况需要你必须在数据流之外修改一个子组件.这个子组件可以是一个React组件的实例,或者是一个DOM元素.对于这两种情况,React提供了解决方式. 什么时候使用refs 以下有几种合适的情况使用refs: 处理焦点,文本选择或者媒体播放 触发强制的动画 整合第三方DOM库 避…
我们先看看这个变量声明: const element = <h1>Hello, world!</h1>; 这个有趣的标签语法既不是字符串也不是HTML. 这种写法叫做JSX,这是一种对js语法的扩展.我们建议使用这种语法和React配合去描述UI本来应该的样子.JSX也许会让你想到模板语言,但是它拥有js的强大支持是与生俱来的. JSX生产React“元素”.我们会在下一章讲解将这些React元素渲染到DOM中.下面,你可以来看看JSX的基础知识来起步. 在JSX中嵌入表达式 你可…
React和web components是为了解决不同问题而创立的.web components为可重用组件提供了健壮的封装,而React提供了声明式的库来保持DOM和数据同步.这两点是互相补充的.作为一个开发者,你可以自由地在你的web components里使用React,或者在React里使用web components,或者两者同时使用. 很多人使用React而不使用web components,但是你也许想要试一试,特别是如果你在使用依靠web components开发的第三方UI组件…
React提供了一个声明式地API因此你不用担心每一次更新什么东西改变了.这使得开发应用变得简单,但是这个东西在React中如何实现的并不是很明显.这篇文章会解释我们在React的算法中所做的选择以便组件的更新是可预测的当为了高性能的app而变得速度足够快. 目的 当你使用React,在一个单独的时间点你可以考虑render()函数会创建一棵React元素的树.当下一次state或者props更新了,render()函数将会返回一个不同的树.React随后需要解决怎样有效率地更新UI去匹配最新的…
大多数情况下,我们建议使用受控组件(也就是用React的state来控制表单元素的value值)来实现表单.在一个受控组件里,表单数据被React组件处理.另一种方案就是非控制组件,这样的话表单数据就被DOM本身所处理. 要写一个非控制组件,来替代写一个事件处理函数来处理每一次state的更新,你可以使用ref引用来从DOM里获取表单的value值. 举个例子,这段代码在一个非受控组件里接受单个属性: class NameForm extends React.Component { constr…
经常有些组件需要映射同一个改变的数据.我们建议将共用的state提升至最近的同一个祖先元素.我们来看看这是怎样运作的. 在这一节中,我们会创建一个温度计算器来计算提供的水温是否足够沸腾. 我们先创建一个叫BoilingVerdict的组件.它接受摄氏度温度为prop,并且打印水温是否足够沸腾: function BoilingVerdict(props) { if (props.celsius >= 100) { return <p>The water would boil.</p…
首先,我们回顾一下在js里如何转换数组. 给出下面的代码,我们使用map()函数来获取一个数组的numbers然后将值变成两倍大.我们分配新数组由map()返回: const numbers = [1, 2, 3, 4, 5]; const doubled = numbers.map((number) => number * 2); console.log(doubled); 这段代码在控制台输出[2, 4, 6, 8 ,10]. 在React里,把数组转变成一系列元素也是一样的. 渲染多个组件…
组件可以让你将UI分割成独立的,可复用的模块,然后考虑将每个模块彼此隔离.从概念上理解,组件就像js中的函数.他们接受随意的输入(被称为props)然后返回React元素来描述屏幕上应该出现什么. 函数式和类式组件 定义一个组件最简单的方法是写一个js函数: function Welcome(props) { return <h1>Hello, {props.name}</h1>; } 这个函数是一个有效的React组件因为它接受一个props对象作为参数然后返回一个React元素…
注:采用ES6+JSX语法 1.开始一个项目 在React中使用Onsen UI 需要首先安装onsenui和react-onsenui模块. 可以使用monaca CLI工具包快速初始化一个应用: $ npm install -g monaca # Install Monaca CLI - Onsen UI toolkit $ monaca create helloworld # Choose React template $ cd helloworld; monaca preview # R…
元素渲染 更新元素渲染 计时器例子 function tick(){ const element = ( <div> <h1>Hello, World!</h1> <h2>It is {new Date().toLocaleTimeString()}.</h2> </div> ); ReactDOM.render( element, document.getElementById('root') ); } setInterval(ti…
React中,通过React组件可以很容易地追踪数据流.当你关注一个组件,你可以发现哪一个props被传递了,这样使得你的应用很容被推断. 在一些情况下,你想要传递数据通过组件树而不需要去手动在每一层传递.你可以直接使用强大的context API. 为什么不使用context 大量的应用不需要使用context. 如果你希望你的应用稳定,不要使用context.这是一个实验性的API在未来的版本中有可能会崩溃. 如果你不熟悉state管理库就类似于Redux或者Mobx,不要使用context…
JSX并不是使用React的一个强制需求.当你不需要在你的构造环境里设置编译那么不使用JSX会很方便. 每一个JSX元素只是调用React.createElement(componnet, props, ...children)的语法糖.因此,JSX能做的事原生js同样也做得到. 举个例子,下面的代码用JSX: class Hello extends React.Component { render() { return <div>Hello {this.props.toWhat}</d…
通常你会将一个React组件定义成一个普通的js类: class Greeting extends React.Component { render() { return <h1>Hello, {this.props.name}</h1>; } } 如果你不打算使用ES6,你也可以使用create-react-class 模块: var createReactClass = require('create-react-class'); var Greeting = createRe…
在内部,React使用好几种聪明的技巧去最小化更新UI所需要的DOM操作.对于很多应用来说,使用React会使得构建用户界面非常之快而且不需要做太多专门的性能优化.虽然如此,还是有一些方法可以让你为React应用加速. 使用生产构建 如果你正在性能测试或者在你的应用里遇到性能测试问题,确保你测试时使用了压缩了的生产构建: 对于创建React应用,你需要运行npm run build然后遵循指令 对于单文件构建,我们提供生产环境.min.js的文件版本 对于模块管理,你需要设置NPDE_ENV=p…
注意: React.PropTypes 自 React v15.5 起已弃用.请使用 prop-types 库代替. 随着你的应用的开发,你会使用类型检查的方法来捕获很多bug.对于一些应用,你可以使用js扩展就像Flow或者TypeScript去对整个应用进行类型检查.但是即使你不是用这些扩展语言,React也有一些内置的类型检查功能.在props上运行类型检查,你可以指派特殊的propTypes属性: import PropTypes from 'prop-types'; class Gre…
根本上,JSX只是为React.createElement(component, props, ...children)函数提供语法糖.JSX代码是这样的: <MyButton color="blue" shadowSize={2}> Click Me </MyButton> 编译成这样: React.createElement( MyButton, {color: 'blue', shadowSize: 2}, 'Click Me' ) 你也可以使用自己闭合的…
React拥有很强大的组合模型,我们建议使用组合来替代继承来重利用组件之间的代码. 在本章节中,我们将讨论一些开发者经常触及继承的问题,并且我们该如何使用组合来解决这些问题. 组合 一些组件事先不知道它们的子组件.这种问题特别对于组件类似Sidebar或者Dialog这种通用的“盒子”. 我们建议像这样的组件使用特殊的children属性去直接传递子元素到它们的输出里: function FancyBorder(props) { return ( <div className={'FancyBo…
在React中,你可以创建不同的组件各自封装你需要的东西.之后你可以只渲染其中的一部分,这取决于应用的state(状态). 条件渲染在React里就和js里的条件语句一样.使用js里的if或者条件表达式创建元素来显示当前的状态,然后让React来更新UI. 看看下面两个组件: function UserGreeting(props) { return <h1>Welcome back!</h1>; } function GuestGreeting(props) { return &…
React元素处理事件和DOM元素处理事件很类似.下面是一些语法的不同之处: React事件的命名是用驼峰命名,而不是小写字母. 利用JSX你传递一个函数作为事件处理器,而不是一个字符串. 举个例子,这是一段HTML: <button onclick="activateLasers()"> Activate Lasers </button> 而在React中略微有些不同: <button onClick={activateLasers}> Activ…
想一下之前的章节时钟的例子. 目前为止我们只学习了一直方式去更新UI. 我们调用ReactDOM.render()方法去改变渲染的输出: function tick() { const element = ( <div> <h1>Hello, world!</h1> <h2>It is {new Date().toLocaleTimeString()}.</h2> </div> ); ReactDOM.render( element,…
元素是React应用的最小单位. 一个React元素描述了你在屏幕上所看到的东西: const element = <h1>Hello, world</h1>; 和浏览器页面中的DOM元素不同,React元素是普通的对象,创建起来很方便.React DOM负责处理根据React元素来更新DOM. 笔记: 你也许会困惑元素和另外一个广为人知的概念“组件”有什么区别.我们会在下一章节介绍组件.组件由元素组成,我们建议你看完本章节再看下一章节. 渲染React元素到DOM 让我们假设有一…
开始学习React最简单的实践就是去试一试CodePen上面的Hello World程序.你不需要安装任何东西,只要新开一个标签页打开例子依照原例操作即可.如果你更喜欢在本地开发,那么来看看安装的介绍. 最简单的React例子就像这样: ReactDOM.render( <h1>Hello, world!</h1>, document.getElementById('root') ); 这段代码渲染了一个页面的头部,显示文字“Hello World”. 接下来的章节会逐步介绍如何使…