从 React到React Native

React简介

RN基于React设计,了解React有利于我们开发RN应用。
React希望功能分解化,让开发像搭积木一样,快速而且可维护。



React的3个特点

  • 作为UI(Just the UI)
  • 虚拟DOM(Virtual DOM)
    这是亮点,是React最重要的一个特性
    更新View很快,放进内存,最小更新的视图
    差异部分更新 diff算法
  • 数据(Data Flow)单向数据流

学习React要掌握的只是:

  • JSX语法 类似XML
  • ES6相关
  • 前端基础 CSS+DIV JS


举例说明React的用法,IDE工具:WebStorm(JavaScript 开发工具 Web前端开发神器 插件很丰富,智能代码提示,自动补全)
比如:ReactNative 代码智能提醒(Webstorm)
git clone https://github.com/virtoolswebplayer/ReactNative-LiveTempate
下载模板:https://github.com/wix/react-templates
安装命令:npm install react-templates -g

点击下载Webstorm
点击下载Webstorm破解版

例子

1.例子一 (简单组件和数据传递) 使用this.props 指向自己的属性

http://facebook.github.io/react/downloads.html 下载react Kit

react.js react-dom.js:React 的核心文件

JSXTransformer.js browser.min.js:讲JSX转译成js和html的工具

最新的react版本:react-15.3.1

在react 0.14前,浏览器端实现对jsx的编译依赖jsxtransformer.js 在react 0.14后,这个依赖的库改为browser.js,页面script标签的type也由text/jsx改为text/babel 但是以上只能用来测试学习react
生产环境需要借助编译工具事先将jsx编译成js

例如可以使用Node.js做预编译,可以安装react-tools工具
npm install -g react-tools

例子源码

  1. <!DOCTYPE html>
  2. <html>
  3. <headlang="en">
  4. <metacharset="UTF-8">
  5. <title>React第一个例子</title>
  6. <scripttype="text/javascript"src="react.js"></script>
  7. <scripttype="text/javascript"src="react-dom.js"></script>
  8. <scripttype="text/javascript"src="browser.min.js"></script>
  9. </head>
  10. <body>
  11. <divid="example"></div>
  12. <scripttype="text/babel">
  13. varHelloMessage=React.createClass(
  14. {
  15. render:function(){
  16. return<h1 style={{color:‘#ff0000‘,fontSize:‘24px‘}}>Hello{this.props.name}!我是星空守候</h1>;
  17. //这是注释 React.createElement
  18. }
  19. }
  20. );
  21. ReactDOM.render(<HelloMessage name="React 语法基础"/>,document.getElementById(‘example‘));
  22. </script>
  23. </body>
  24. </html>

2.例子二 (通过this.state更新视图)

  • 源码
  1. <!DOCTYPE html>
  2. <html>
  3. <headlang="en">
  4. <metacharset="UTF-8">
  5. <title>React第二个例子</title>
  6. <scripttype="text/javascript"src="react.js"></script>
  7. <scripttype="text/javascript"src="react-dom.js"></script>
  8. <scripttype="text/javascript"src="browser.min.js"></script>
  9. </head>
  10. <body>
  11. <divid="example"></div>
  12. <scripttype="text/babel">
  13. /*自定义组件*/
  14. varTimer=React.createClass(
  15. {
  16. /*初始状态*/
  17. getInitialState:function(){
  18. return{secondsElapsed:0};
  19. },
  20. tick:function(){
  21. this.setState({secondsElapsed:this.state.secondsElapsed+1});
  22. },
  23. /*组件完成装载*/
  24. componentDidMount:function(){
  25. this.interval=setInterval(this.tick,1000);
  26. },
  27. /*组件将被卸载 清除定时器*/
  28. componentWillUnmount:function(){
  29. clearInterval(this.interval);
  30. },
  31. /*渲染视图*/
  32. render:function(){
  33. return(
  34. <div>SecondsElapsed:{this.state.secondsElapsed}</div>
  35. );
  36. }
  37. }
  38. );
  39. React.render(<Timer/>,document.getElementById(‘example‘));
  40. </script>
  41. </body>
  42. </html>

3.例子三 (简单应用)

  • 源码
  1. <!DOCTYPE html>
  2. <html>
  3. <headlang="en">
  4. <metacharset="UTF-8">
  5. <title>React第三个例子</title>
  6. <scripttype="text/javascript"src="react.js"></script>
  7. <scripttype="text/javascript"src="react-dom.js"></script>
  8. <scripttype="text/javascript"src="browser.min.js"></script>
  9. </head>
  10. <body>
  11. <divid="example"></div>
  12. <scripttype="text/babel">
  13. varShowEditor=React.createClass(
  14. {
  15. getInitialState:function(){
  16. return{value:‘你可以在这里输入文字‘};
  17. },
  18. handleChange:function(){
  19. this.setState({value:React.findDOMNode(this.refs.textarea).value});
  20. },
  21. render:function(){
  22. return(
  23. <div>
  24. <h3>输入</h3>
  25. <textarea style={{width:300,height:150,outline:‘none‘}}
  26. onChange={this.handleChange}
  27. ref="textarea"
  28. defaultValue={this.state.value}
  29. />
  30. <h3>输出</h3>
  31. <div>{this.state.value}</div>
  32. </div>
  33. );
  34. }
  35. }
  36. );
  37. React.render(<ShowEditor/>,document.getElementById(‘example‘));
  38. </script>
  39. </body>
  40. </html>

React Native简介与代码分析

为什么要使用React Native,如何在开发成本和用户体验做到更好的平衡?
很多时候,前端都有一种乐观的想法:H5可以替代原生应用,RN不仅可以使用前端开发的模式来开发应用,还能调用原生应用的UI组件和API。

来自为知笔记(Wiz)

时间: 2024-08-27 14:00:58

从 React到React Native的相关文章

React的React Native

React无疑是今年最火的前端框架,github上的star直逼30,000,基于React的React Native的star也直逼20,000.有了React,组件化似乎不再步履蹒跚,有了React Native,前端的边界似乎广阔无边.而Webpack凭借它异步加载和可分离打包等优秀的特性,走在取代Grunt和Gulp的路上.而面向未来的ES6,模块化的支持似乎已成定局. 我们现在就可以打造自己的Webpack+React+ES6环境并且开始探索起来. 这篇文章就给还没走在这条路上的前端一

小谈React、React Native、React Web

React有三个东西,React JS 前端Web框架,React Native 移动终端Hybrid框架,React Web是一个源码转换工具(React Native 转 Web,并之所以特别提出,是觉得还有些用处). React.React Native共同特点 起源 Facebook 的内部项目 理念 Learn once, write anywhere,而不是Write once, run anywhere.简单说就是,让你在Web.Mobile原生的开发套路一样,但你还是需要写两套代

React学习笔记-1-什么是react,react环境搭建以及第一个react实例

什么是react?react的官方网站:https://facebook.github.io/react/下图这个就是就是react的标志,非常巧合的是他和我们的github的编辑器Atom非常相似.react是Facebook官方推出的一个javascript的库,现在已经有了非常多的库和框架Facebook为什么还要开发一款新的框架呢?原因就是 Facebook遇到了一些新的问题.Facebook需要解决的问题是构建数据不断变化的大型应用.大型应用是什么意思?数据不断变化带来什么问题呢? 

[React] Remove React PropTypes by using Flow Annotations (in CRA)

Starting from v15.5 if we wanted to use React's PropTypes we had to change our code to use a separate node module, now we can go one step further and get rid of that extra dependency just by using flow type annotations in our create-react-app project

重谈react优势——react技术栈回顾

react刚刚推出的时候,讲react优势搜索结果是几十页. 现在,react已经慢慢退火,该用用react技术栈的已经使用上,填过多少坑,加过多少班,血泪控诉也不下千文. 今天,再谈一遍react优势,WTF? React的收益有哪些?React的优势是什么?react和vue.angularJS等其它框架对比优势? 而作为总结回顾.react在工程实践中,带来哪些思想上的质变? virtual dom虚拟DOM概念 它并不直接对DOM进行操作,引入了一个叫做virtual dom的概念,安插

为什么import React from &#39;react&#39;,React首字母必须大写?

很奇怪的是,明明没有用到 React,但是我不得不 import React.这是为什么? import React from 'react'; export default function (props) { return ( <form className="signIn" onSubmit={props.onSubmit}> {/* 登录*/} <form className="signIn" onSubmit={props.onSubmi

[React] Validate React Forms with Formik and Yup

Validating forms in React can take several lines of code to build. However, Formik's ErrorMessage component and Yup simplify that process. import { ErrorMessage, Field, Form, Formik } from 'formik'; import React from 'react'; import { render } from '

React: 研究React Redux的使用

一.简介 在上一篇的Redux文章中,详细介绍了Redux的概念和综合利用,开发者可以通过Redux的State管理系统管理整个应用程序的数据流,依靠功能完备的Store来分发Action,进而渲染和更新组件的UI.在我们之前的文章介绍中,根组件是保存State的组件,一般的Web开发,都是将State数据作为属性,从根组件向下传递给子组件,当子组件触发事件时,数据再通过回调函数的属性沿着组件树向上回到了根组件.这种数据在组件树中向上和向下传递的过程增加了程序的复杂性,于是乎,类似Redux的库

React于React native的渲染机制

面向virtual DOM编程 vs 面向native componet编程: 状态编程引起的UI变化会全部提交到native compnent然后走平台原来的渲染流程. The DOM is just one of the rendering environments React can render to, the other major targets being native iOS and Android views via React Native. (This is why "vi