前端那些事之React篇--helloword

前端之家收集整理的这篇文章主要介绍了前端那些事之React篇--helloword前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

React的学习

  • 用webstorm开发React要注意了,如果了用了webpack管理代码的话,一定要在webstrom设置里设置
  • 点击settings -------->搜索“safe writing”------------------>去掉对应的勾如图所示:

环境的搭建

  • 安装node
  • npm 淘宝镜像
  • 在github上搜索create-react-app 脚手架 - 安装顺序:npm install -g create-react-app - create-react-app my-app(可以在指定的目录下创建) - cd my-app/ - npm start

目录结构

  • my-app/
  • README.md
  • node_modules/
  • package.json
  • .gitignore
  • public/
  • favicon.ico
  • index.html
  • src/ -App.css
  • App.js
  • App.test.js
  • index.css
  • index.js
  • logo.svg

js模块化

  1. a.js
  2. var aaa=111;
  3. module.export=aaa;
  4. ----
  5. b.js
  6. var value=require('./aa');
  7. console.log(value)

简单的helloword的实现

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3.  
  4. //定义react组件名称:一定要大写
  5. var Hello=React.createClass({
  6. /*******state属性用getInitialState()来设置默认的值*******/
  7. getInitialState(){
  8. return{
  9. text:0,name:'今天下雨了'
  10. }
  11. },//两种方法
  12. // render:function(){
  13. render(){
  14. //可以写下个变量
  15. var name='小样';
  16. var test="社会生活";
  17. return(
  18. //后面一定是要jxs语法,只能是双标签
  19. <div>
  20. <p>hello{name}</p>
  21. <p>hello{test}</p>
  22. {/*这里调用getInitialState方法属性的值*/}
  23. <p>hello{this.state.text}</p>
  24. {/*react的点击事件必须遵循陀峰命名法*/}
  25. <button onClick={this.fun} >按钮</button>
  26. {/*一个组件只做一件事例如*/}
  27. <p>hello</p>
  28. {/*直接调用另一个组件的名称,单向数据流*/}
  29. {/*<Who name="你懂得!"/>*/}
  30. <Who name={this.state.name}/>
  31. {/*实现双向数据绑定效果,键盘不能输入,解决方法添加onChange事件*/}
  32. <input type="text" value={this.state.name} onChange={this.change}/>
  33. </div>
  34. )
  35. },fun:function () {
  36. //获取组件内部state的默认值
  37. var value=this.state.text;
  38. value++;
  39. //设置state的默认值,实现局部刷新
  40. this.setState({
  41. text:value
  42. })
  43. },change:function (e) {
  44. this.setState({
  45. name:e.target.value
  46. })
  47. }
  48. })
  49. //子组件设置props属性,父组件就可以拿到子组件的属性
  50. var Who=React.createClass({
  51. render(){
  52. return(
  53. <div>
  54. {this.props.name}
  55. </div>
  56. )
  57. }
  58. })
  59. //渲染组件的名称
  60. ReactDOM.render(<Hello/>,document.getElementById("root"))

组件生命周期图

组件生命周期

  • 初始化
  • 存在期
  • 销毁期间

组件化

按照组件功能划分目录结构

初始化

  1. getDefaultProps(设置组件默认属性)不常用
  2. getInitialState (设置组件默认状态)常用
  3. componentWillMount (组件将要渲染)不常用
  4. render (必须用)
  5. componentDidMount (组件渲染完毕)常用

存在期间

  1. componentWillReceiveProps (组件接受到了新的属性)常用
  2. componentWillUpdate (组件将要更新)做性能优化时使用 ---我从来没用过
  3. render

销毁期

  1. componentWillUnmount (组件在销毁前)

/--------------------------------------------------------------------------------------------------------------------------/

  • 组件的生命周期分成三个状态:
    • Mounting:已插入真实 DOM
    • Updating:正在被重新渲染
    • Unmounting:已移出真实 DOM
  • 处理函数
    • React 为每个状态都提供了两种处理函数,will函数在进入状态之前调用,did 函数在进入状态之后调用,三种状态共计五种处理函数
    • componentWillMount()
    • componentDidMount()
    • componentWillUpdate(object nextProps,object nextState)
    • componentDidUpdate(object prevProps,object prevState)
    • componentWillUnmount()
  • 此外,React 还提供两种特殊状态的处理函数
    • componentWillReceiveProps(object nextProps):已加载组件收到新的参数时调用
    • shouldComponentUpdate(object nextProps,object nextState):组件判断是否重新渲染时调用

react循环渲染数据

  1. import React from 'react';
  2. import './child.css'
  3. var ChildB=React.createClass({
  4. //放在state属性下面
  5. getInitialState(){
  6. return {
  7. item:[
  8. '用户点击了1次','用户点击了1次','用户点击了1次'
  9. ]
  10. }
  11. },render(){
  12. //用map方法来循环,o代表每一项,i代表个数
  13. var value=this.state.item.map(function (o,i) {
  14. return(
  15. <li>{o}+{i}</li>
  16. )
  17. })
  18. return(
  19. <div className='child'>
  20. <p>子组件{this.props.name}</p>
  21. <ul>
  22. //调用循环的值
  23. {value}
  24. </ul>
  25. </div>
  26. )
  27. }
  28. })
  29. module.exports=ChildB;

猜你在找的React相关文章