react学习--1
2017-03-19 16:55
260 查看
首先万事皆有源,react的github地址附上:https://github.com/facebook/react
其次,推荐个写的不错的react学习博客http://www.ruanyifeng.com/blog/2015/03/react.html
看完这些之后。可以再来看本人学习的过程,本人也是在看了上面的博客然后结合官网的例子,继续学习的。
推荐几个react必备网址:
https://codepen.io/gaearon/pen/JbbEzX react在线效果查看器,如果只想看看react代码的效果,直接在这里查看就可以了
http://babeljs.io/repl/#?babili=false&evaluate=true&lineWrap=false&presets=es2015%2Creact%2Cstage-2&targets=&browsers=&builtIns=false&code= 可以将react风格的代码编译成比较容易理解的js代码
https://www.w3ctech.com/topic/1496 使用开发工具时,如Webstorm的配置和注意事项。
有了以上的基础,开始继续学习react。
在用webstorm编辑react代码时,可能会出现下面情况:
虽然也根据很多教程做了相应的IDE修改,但是还是报错。找不到好的解决办法,唯一的办法,就是将html代码和js代码分离。然后引入js代码的时候使用
接下来正式继续学习…
本DEMO实例主要熟悉下react的生命周期
主要的生命周期可以参考https://segmentfault.com/a/1190000004168886
首先是本教程demo中所有的html页面,都是一样的代码,如下:
js代码如下:
在浏览器中访问控制台结果如下:
可以看到,getDefaultProps方法只会调用一次,并且是在createclass的时候就调用;而getInitialState方法会在每个实例创建的时候,都调用一次。componentDidMount方法也打印了两次。
详细页面如下:
其余生命周期的方法,也都大同小异,大家可以自行实践。
如果最后的方法变成:
则效果如下
可见,嵌套的只显示最外层的HelloMessage。
其次,推荐个写的不错的react学习博客http://www.ruanyifeng.com/blog/2015/03/react.html
看完这些之后。可以再来看本人学习的过程,本人也是在看了上面的博客然后结合官网的例子,继续学习的。
推荐几个react必备网址:
https://codepen.io/gaearon/pen/JbbEzX react在线效果查看器,如果只想看看react代码的效果,直接在这里查看就可以了
http://babeljs.io/repl/#?babili=false&evaluate=true&lineWrap=false&presets=es2015%2Creact%2Cstage-2&targets=&browsers=&builtIns=false&code= 可以将react风格的代码编译成比较容易理解的js代码
https://www.w3ctech.com/topic/1496 使用开发工具时,如Webstorm的配置和注意事项。
有了以上的基础,开始继续学习react。
在用webstorm编辑react代码时,可能会出现下面情况:
虽然也根据很多教程做了相应的IDE修改,但是还是报错。找不到好的解决办法,唯一的办法,就是将html代码和js代码分离。然后引入js代码的时候使用
<script src="index.js" type="text/babel"></script>注意type属性。
接下来正式继续学习…
本DEMO实例主要熟悉下react的生命周期
主要的生命周期可以参考https://segmentfault.com/a/1190000004168886
首先是本教程demo中所有的html页面,都是一样的代码,如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script src="../build/react.js"></script> <script src="../build/react-dom.js"></script> <script src="../build/browser.min.js"></script> <script src="index.js" type="text/babel"></script> </head> <body> <div id="example"></div> </body> </html>
js代码如下:
var count =0; var HeloChild = React.createClass({ //先申明 才能使用 render : function(){ //属性改变调用render return(<a>{this.props.childProps}</a>); } }); var HelloMessage = React.createClass({ getDefaultProps :function(){ console.log("getDefaultProps"); //在create的时候就创建如果后面有直接赋值的属性就会覆盖此处 //所有实例共用此属性 return {title : 'Hello World tqy'}; }, getInitialState : function(){ //每个实例调用一次 count++; console.log("getInitialState"); console.log(count); return {mystate:"mystate", childProps:"childProps" }; }, render: function() { //状态改变调用render return (<div><h1 onClick={this.callback}>Hello {this.props.name+this.props.title }{ this.state.mystate+"\n"}</h1> <HeloChild childProps={this.state.childProps}></HeloChild> </div> ); }, //函数的两种写法 componentDidMount(){ console.log("componentDidMount"); }, callback : function(event){ console.log("click"); this.setState({mystate: "mystateCCCCCCC",childProps:"childProps22"}); } }); ReactDOM.render( //组件&组件之间不能嵌套 <div><HelloMessage name="aaa" title="bbbb"/><HelloMessage></HelloMessage></div>, document.getElementById('example') );
在浏览器中访问控制台结果如下:
可以看到,getDefaultProps方法只会调用一次,并且是在createclass的时候就调用;而getInitialState方法会在每个实例创建的时候,都调用一次。componentDidMount方法也打印了两次。
详细页面如下:
其余生命周期的方法,也都大同小异,大家可以自行实践。
如果最后的方法变成:
ReactDOM.render( //组件组件之间不能嵌套 <div><HelloMessage><HelloMessage name="aaa" title="bbbb"/></HelloMessage></div>, document.getElementById('example') );
则效果如下
可见,嵌套的只显示最外层的HelloMessage。
相关文章推荐
- React.js 学习
- Reactjs学习 -- factory、component和element
- React学习笔记(4)---react属性与状态
- react router 学习总结
- React学习笔记(5)--事件
- React学习,持续更新...
- React学习笔记(5)--事件
- 【JAVASCRIPT】React学习-如何构建一个组件
- 整理了一份React-Native学习指南
- react native学习1-安装,执行
- React学习——ListView(Reflux)
- iOS react native 学习资料
- React学习笔记(3)-- JSX语法及特点介绍
- 学习React(一)
- 一份React-Native学习指南
- React-Native学习指南
- React学习——ListView组件
- React学习笔记(6)---组件协同使用介绍
- React官网学习笔记
- ReactJS学习笔记八:动画