React-1.JSX

1、JSX的介绍

什么是JSX:JSX=javascript xml就是Javascript和XML结合的一种格式。是 JavaScript 的语法扩展,只要你把HTML代码写在JS里,那就是JSX

在实际开发中,JSX 在产品*打包阶段*都已经编译成纯 JavaScript,不会带来任何副作用,反而会让代码更加直观并易于维护。官方定义是:类 XML 语法的 ECMAScript 扩展。

2、特点:

JSX 执行更快,因为它在编译为 JavaScript 代码后进行了优化。

它是类型安全的,在编译过程中就能发现错误。

使用 JSX 编写模板更加简单快速。

3、JSX的语法

SX就是把html代码写在javascript中,那么,写在javascript中有啥要求(与原来在html中的区别),这就是jsx语法要说的内容。

示例:

var msg="哥们!"
const element = <h1>Hello, world!{msg}</h1>     没有双引号,不是字符串
const List = () => (
      <ul>
        <li>list item</li>
        <li>list item</li>
        <li>list item</li>
      </ul>  
  );     

XML基本语法

  • 只能有一个根标签,养成外面加上圆括号的习惯。
  • 标签要闭合(单边标签得有斜杠)
    元素类型
  • 小写首字母对应 HTML的标签,组件名首字母大写。
  • 注释使用 / * 内容 * / html标签内注释{/ * 最外层有花括号*/}
    元素属性
  • 内联样式的style:样式名以驼峰命名法表示, 如font-size需写成fontSize。默认像素单位是 px(px不用写)
      let _style = {backgroundColor:"red"};
      ReactDOM.render(
          <h1 style={_style}>Hello, world!</h1>, 
          document.getElementById('box')
      );
    
  • 外部样式的class:HTML中曾经的 class 属性改为 className(因为class是js的关键字),外部样式时使用
      ReactDOM.render(
          <h1  className="bluebg">Hello, world!</h1>,
          document.getElementById('box')
      );
    
  • for 属性改为 htmlFor(因为for是js的关键字)。(for属性在html标签中是扩充单(复选框)选框的选择范围)

  • 事件名用驼峰命名法。HTML是全小写(onclick),JSX中是驼峰(onClick)

javascript表达式

  • 使用单花括号

    react里没有vue中的指令,任何地方需要javascript的变量(表达式),只需要套上 单花括号就行。

    const element = <h1>Hello, {120+130}!</h1>
    const element = <h1>Hello, {getName("张三疯")}!</h1>
    <input type="text" value={val ? val : ""} />
    
    let _style = {    backgroundColor:"hotpink" }
    <div style={_style}>我是div</div>
    

    注意:单花括号里只能写表达式,不能写语句(如:if,for)

总结:

对比vue,JSX相当于把vue组件里的template和javascript代码混写在一起,而vue中有很多的指令,react中只需要使用单花括号就行。

ReactDOM.render()函数

ReactDOM.render 是 React 的最基本方法。用于将JSX写的模板转为 HTML 语言,并渲染到指定的HTML标签里。

ReactDOM.render( JSX写的html模板,dom对象);

总结:一个react的程序,就是把JSX通过ReactDOM.render()函数渲染到网页上。

程序员完成的是JSX的编写。

条件渲染

var sex='女';
if(sex=='男'){
    var sexJSX=<p>我是男的</p>;
}else{
    var sexJSX=<p>我是女的</p>;
}

ReactDOM.render(
    <ul>
        {sexJSX}
    </ul>,
    document.getElementById('box')
);

注意:if语句不要写在单花括号里。

列表渲染

1)、渲染数组:

//数组里存放jsx
var arr=[
    <li>张三疯</li>,
    <li>张四疯</li>,
    <li>张五疯</li>
]

const show = ()=> (
    <ul>{arr}</ul>
)
ReactDOM.render(show(),document.getElementById("box"));

2)使用Javascript的map()或者普通for循环进行列表的渲染

//普通for循环

let arr = ["铅笔","油笔","钢笔","毛笔"];
var arr2 =[];
for(let i in arr){
    arr2.push(<li>{arr[i]}</li>);
}

const show = ()=> (
    <ul>{arr2}</ul>
)

ReactDOM.render(show(),document.getElementById("box"));

//map
const goods = ['铅笔','钢笔'];
const goodsJSX = goods.map(function(val,index){
    return <li>{val}</li>
});             

ReactDOM.render(
    //以下相当于react里的模板,不能出现js的语句,可以有表达式
    <ul>
        {goodsJSX}
    </ul>,
    document.getElementById('box')
);
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352