博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React——JSX
阅读量:5214 次
发布时间:2019-06-14

本文共 2262 字,大约阅读时间需要 7 分钟。

一.将表达式嵌套在JSX中

要在JSX中内嵌js表达式只需要将js表达式放在{}中,例如:

const element = 

this is a JSX {sayName()}

function sayName(){};

二.JSX也是表达式

在编译之后Jsx会成为一个常规的js对象。所以可以在if,for语句中使用Jsx,例如

function getName(firstname,lastname,all=false){if(all){return 

{firstname} {lastname}

}}

注:使用jsx时,标签之间的内容会被当作字符串({}中的会被当作js语句),如

{name1} + ' ' + {name2}

const name1 = 'li';const name2 = 'hua';会被渲染为li+' '+hua

 

 三.使用JSX给元素添加属性

 

// 第一种方式const element = 

this is page

// 第二种方式 const element =

this is page,too

const title = 'page';// 注:JSX中的元素的属性使用驼峰命名法(class对应className)

四.JSX标签也能够包含子标签

const element = (        

I am a header

I am a page

);

 五.深入JSX

1.jsx只是React.createElement(element,props,children)的语法糖;

<MyButton color='red' num={2}>Click me</MyButton>

会被编译成

React.createElement(MyButton,{
   color:'red',
   num:2
},'Click me');
自闭和元素:<div color='red'/>,会被编译成
React.createElement('div',{
  color:'red'
},null)

 2.jsx的第一部分决定了react组件的类型。大写的类型表明jsx标签指的是一个react组件。这些标签被编译到直接引用的命名变量中,所以如果使用jsx<MyButton/>表达式,

MyButton必须在作用域内,因为编译jsx要使用React.createElement,所以React也必须在作用域范围内

3.React组件可以是一个对象的属性,如下:

const allComponents = {    MyButton:function(props){        return     }}

 4.自定义的组件必须以大写开头。如果一个元素以小写字母开头,那么react会认为它是一个内置的组件(如:div,p等),这种情况React.createElement的第一个参数是字符串

5.不能使用一个表达式作为React 元素类型。但是可以先将这个表达式的值保存到一个以大写字母开头的变量中

 

const typesElement = {    One:function One(props) {        return 

one

}, Two:function Two(props) { return

two

}};function MyButton(props) { const Com = typesElement[props.type]; return
}function Jsx(props) { return
}

 

 6.在jsx中有多种指定props的方式,如下:

1).js表达式:
2).纯字符串:
3).如果没有给prop赋值,那么这个prop默认为true:
4).扩展运算符
const props = {first:'one','second':'two'}
等价于

 7.jsx表达式中开标签核闭标签之间的内容将作为一个特殊的prop——props.children开标签与闭标签之间可以是字符串,其他组件,js表达式或者函数(props.children

和其他的props一样可以传递任何类型的数据)。当props.children为布尔值,null,undefined时,props.children会被忽略

==
{true}
==
{false}
==
{null}
==
{undefined时}
,这种特性对条件渲染是很有用的,如下
{show &&
}
当show为true时,
才会被显示

如果想让null,false,true,undefined被输出,先要把它们转换为字符串

<myButton>I am is {show.toString()}</myButton>

转载于:https://www.cnblogs.com/QxQstar/p/7529951.html

你可能感兴趣的文章
人事管理系统 c语言版
查看>>
KMP模板
查看>>
java未开源的Unsafe类
查看>>
Direct2D教程(一)Direct2D已经来了,谁是GDI的终结者?
查看>>
leetcode-Majority Element
查看>>
20162306 2016-2017-2《程序设计与数据结构》第八周学习总结
查看>>
[转]全面理解Unity加载和内存管理
查看>>
Python全栈(一)编程语言介绍
查看>>
Oleg and Little Ponies
查看>>
C# 装箱与拆箱转换
查看>>
深入C#数据类型
查看>>
Graphviz: 绘制依赖图、流程图、关系图 + dot 语言
查看>>
TCP/IP 小知识
查看>>
直接显示的日历插件使用
查看>>
bzoj千题计划308:bzoj4589: Hard Nim(倍增FWT+生成函数)
查看>>
获取url后面的参数的方法
查看>>
慎重管理SQL Server服务的登录(启动)账户和密码
查看>>
particleDesigner2 positionType按钮
查看>>
【工程实践】服务器数据解析
查看>>
知物由学 | 如何从勒索软件的攻击中全身而退
查看>>