React学习笔记—数据展示
我们使用UI最基本的事就是用来展现数据。React使得展现数据变得简单,并且当数据改变时,React能自动保持UI的更新。 开始创建一个简单的Demo: #index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>React</title> </head> <body> <div id="example"></div> <script src="js/react.js"></script> <script src="js/JSXTransformer.js"></script> <script src="js/app.js" type="text/jsx"></script> </body> </html>
#app.js var HelloWorld = React.createClass({ render: function () { return ( <p> Hello,<input type="text" placeholder="Your name here" />! It is {this.props.date.toTimeString()} </p> ); } }); setInterval(function () { React.render( <HelloWorld date={new Date()} />,document.getElementById('example') ); },500); React.createClass用来创建一个组件类,前面也说了,编写React代码主要就是构建通用的组件。 React.render将React的模板转化为HTML,并插入到相应的DOM结构中。 功能我们大概了解到这段代码的功能,即使之前完全没有接触过React。其实就是每隔500毫秒将下面这个结构: <p> Hello,<input type="text" placeholder="Your name here" />! It is {this.props.date.toTimeString()} </p> 插入到下面的结构中: <div id="example"></div> 打开浏览器看看效果:发现时间一直在变化,而input框,无论我们怎么操作,一直保持原样不变。 响应式更新上面的例子中,我们只是创建了个组件,并将它插入DOM中,并没有写别的代码。而奇特的效果都是React帮我们实现的。 #app.js var HelloWorld = React.createClass({ render: function () { return ( <p> Hello,<input type="text" placeholder="Your name here" value={this.props.date.toTimeString()}/>! It is {this.props.date.toTimeString()} </p> ); } }); setInterval(function () { React.render( <HelloWorld date={new Date()} />,500); 组件类似于函数React的组件很简明。可以把它看作有着props和state状态并且可以返回HTML结构的函数。因为组件很简明,所以很容易就可以看出它在干什么。
#正确的 var HelloWorld = React.createClass({ render: function () { return ( <div> <div></div> </div> ); } }); #错误的 var HelloWorld = React.createClass({ render: function () { return ( <div></div> <div></div> ); } }); JSX语法概述细心的人会发现,我们编写的JavaScript代码中,所有的模板内容都没有加引号。这种JavaScript和HTML混写的方式就是所谓的JSX语法了,React独创。 <script src="js/react.js"></script> <script src="js/JSXTransformer.js"></script> <script src="js/app.js" type="text/jsx"></script> React的作者认为,组件应该同关注分离,而不是同模板和展现逻辑分离。结构化标记和生成结构化标记的代码是紧密关联的,此外,展现逻辑一般都很复杂,使用模板语言会使展现变得笨重。 #JSX语法 React.render( <div className="c-list">content</div>,document.getElementById('example') ); #plain JavaScript React.render( React.createElement('div',{className: 'c-list'},'content'),document.getElementById('example') ); 这样简单的例子,我们都能感觉到JSX更加的语义化,更别说复杂的组件了。所以强烈建议使用JSX。 <script src="js/react.js"></script> <script src="js/JSXTransformer.js"></script> <script src="js/app.js" type="text/jsx"></script> 生成环境则不能这么干,因为JSX的转化是需要时间的。线上的代码应该是直接可执行的,我们应该在离线环境下提前转化,这里就要使用到工具了。
参考资料: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Swift3.0语言教程获取C字符串
- objective-c – WatchOS2 Health Kit – 添加到活动移动环
- ruby – 如何使用Gemfile的:path参数来引用开发中的本地ge
- 当xml中存在命名空间,dom4j解析以及写入xml文档时的乱码问题
- ruby-on-rails – 没有这样的列:以下多对多关联中的书签
- Sqlite的操作(增加,删除,查询,修改)
- saltstack常用操作(六)------reactor和event系统
- swift - 关于title问题
- 为什么C#System.Char方法的Unicode属性测试有两个重载?
- 匹配管理领域定义语言(MappingMaster DSL)——叙词转换为