React语法 [0]

React练习笔记


reprintemps 2020-07-11


语法分析:

  1. 标签属性需要遵循规则 : 毕竟是替你转译,所以并不是真的在写标签;

    • 涉及JSX语法的部分,浏览器无法识别,必须转译,所以<script type='text/babel' />;

    • class => className;

    • onclick => onClick;

    • JSX里的js部分用表达式 : {/*js部分(变量|方法|..)*/};

  2. 要件:

    • render()方法 : 该组件被使用时,调用渲染函数;

      • return : render()的返回值里是具体渲染的内容;
      • *也可以自定义方法用来渲染,但是需要手动调用(使用<Tag />时默认调用该组件render());
    • ReactDOM.render( 0:渲染的组件, 1:追加到哪个容器 );

    • this.props.* :

      • this : 该组件(或者说实际上是该组件的数据模型(即虚拟DOM?));
      • .props : 该组件的属性(参考JQuery的 prop : @0);

依赖:

  • react
  • react-dom
  • babel

代码示例

1 class Square extends React.Component{ 2 render(){ 3 return( 4 <button className='square' onClick={()=>alert("click!")}> 5 {this.props.value} 6 </button> 7 ); 8 } 9 } 10 11 class Board extends React.Component{ 12 renderSquare(i){ 13 return <Square value={i}/>; 14 }; 15 16 render(){ 17 const status = 'Next player: x'; 18 19 return( 20 <div> 21 <div className='status'>{status}</div> 22 <div className='board-row'> 23 {this.renderSquare(0)} 24 {this.renderSquare(1)} 25 {this.renderSquare(2)} 26 </div> 27 <div className='board-row'> 28 {this.renderSquare(3)} 29 {this.renderSquare(4)} 30 {this.renderSquare(5)} 31 </div> 32 <div className='board-row'> 33 {this.renderSquare(6)} 34 {this.renderSquare(7)} 35 {this.renderSquare(8)} 36 </div> 37 </div> 38 ); 39 }; 40 } 41 42 class Game extends React.Component{ 43 render(){ 44 return( 45 <div className='game'> 46 <div className='game-board'> 47 <Board /> 48 </div> 49 <div className='game-info'> 50 <div>{/*status*/}</div> 51 <ol>{/*todo*/}</ol> 52 </div> 53 </div> 54 ); 55 } 56 } 57 58 ReactDOM.render( 59 <Game />, 60 document.getElementById("root") 61 ); 62 63

@0 : 顺便回忆一下:JQuery的prop是预置的属性,attr是自定义属性;可以这么说,但是好像prop也可以自定义一些属性,二者的区别在attr能拿到prop(理解为更松散标准的拿取),但是prop的属性随着控件动态改变会改变,而attr定义的同名属性是自定义所以自然不会.

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

React 之 createElement 源码解读

React与Babel元素标签转译用过React的同学都知道,当我们这样写时:jsx<divid"foo"bar</divBabel会将其转译为:javascriptReact.crea