初识React Native虚拟DOM节点及API

前端之家收集整理的这篇文章主要介绍了初识React Native虚拟DOM节点及API前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Reative Native是著名设社交网络公司Facebook旗下的一款旨在实现虚拟Virtual交互到Native交互层高效交互的View层框架,通过虚拟DOM UI来转为Native UI,通过JSX实现Javascript,IOS,Android原生开发语言的交互,充当一种桥梁(Bridge)的角色,类似一种交叉编译。


虽然不能跨平台应用,但能在各平台上实现各自的代码,但统一的风格,高效的开发受到众多跨平台。

学习网站:

React Native 官方文档中文版

React Native

React Native Github地址

ReactJs官网

示例代码

先来看看最简单的代码

  1. <!DOCTYPEhtml><html>
  2. <head>
  3. <Metacharset="UTF-8"/>
  4. <title>HelloReact!</title>
  5. <!------------start:开发中必须使用的3个js库--------------->
  6. <scriptsrc="../build/react.js"></script>
  7. <scriptsrc="../build/react-dom.js"></script>
  8. <scriptsrc="../build/browser.min.js"></script>
  9. <!------------end:开发中必须使用的3个js库--------------->
  10. </head>
  11. <body>
  12. <divid="example"></div>
  13.  
  14. <!--使用特定的scripttype-->
  15. <scripttype="text/babel">
  16. //首先定义一个UI组建类
  17. varHello=React.createClass({
  18. render:function(){
  19. //css样式使用驼峰写法,如className
  20. return<divclassName="commentBox">Hello{this.props.name}{this.props.myAge}</div>;
  21. }
  22. });
  23. <!--渲染虚拟节点,并且将虚拟节点添加到指定div,注意,这里没有标准属性,一切属性属于自定义-->
  24. ReactDOM.render(
  25. <Helloname="World"myAge="20"/>,document.getElementById('container')
  26. );
  27. </script>
  28. </body>
  29. </html>

当然,我们也可以使得代码和UI分离

html

  1. <!DOCTYPEhtml>
  2. <html>
  3. <head>
  4. <Metacharset="UTF-8">
  5. <title>Document</title>
  6. <scriptsrc="../build/react.js"></script>
  7. <scriptsrc="../build/react-dom.js"></script>
  8. <scriptsrc="../build/browser.min.js"></script>
  9. <scriptsrc="../build/jquery.min.js"></script>
  10. <!--loadappjsx到页面,注意,默认情况下不会load,除非改html放到服务器下-->
  11. <scripttype="text/babel"src=js/app.js>
  12. </script>
  13. </head>
  14. <body>
  15. <divid="example">
  16. </div>
  17. </body>
  18. </html>

app.js---注意,旧版本是app.jsx

  1. classRepoListextendsReact.Component{
  2. //<!--启用构造函数,传入参数-->
  3. constructor(props){
  4. super(props);
  5. this.state={
  6. loading:true,error:null,data:null
  7. }
  8. }
  9. //<!--当jsx渲染完成后执行-->
  10. componentDidMount()
  11. {
  12. this.props.promise.then(
  13. value=>this.setState({loading:false,data:value}),error=>this.setState({loading:false,error:error}));
  14. }
  15. //<!--当jsx渲染完成后执行-->
  16. render(){
  17. if(this.state.loading){
  18. return<span>Loading...</span>;
  19. }
  20. elseif(this.state.error!==null){
  21. return<span>Error:{this.state.error.message}</span>;
  22. }
  23. else{
  24. varrepos=this.state.data.items;
  25. varrepoList=repos.map(function(repo){
  26. return(
  27. <li><ahref={repo.html_url}>{repo.name}</a>({repo.stargazers_count}stars)<br/>{repo.description}</li>
  28. );
  29. });
  30. return(
  31. <main>
  32. <h1>MostPopularJavaScriptProjectsinGithub</h1>
  33. <ol>{repoList}</ol>
  34. </main>
  35. );
  36. }
  37. }
  38. }
  39. //获取js输入,并赋值给promise,注意数据结构是promise={{....}}
  40. ReactDOM.render(
  41. <RepoListpromise={$.getJSON('https://api.github.com/search/repositories?q=javascript&sort=stars')}/>,document.body
  42. );

猜你在找的React相关文章