jsx语法
JSX语法
JSX是一种JavaScript的语法扩展(eXtension),也在很多地方称之为JavaScript XML,因为看起就是一段XML语法;
它用于描述我们的UI界面,并且其完成可以和JavaScript融合在一起使用;
它不同于Vue中的模块语法,你不需要专门学习模块语法中的一些指令(比如v-for、v-if、v-else、v-bind);
const element=<h2>{message}</h2>
👀 JSX的书写规范:
JSX的顶层只能有一个根元素,所以我们很多时候会在外层包裹一个div元素(或者使用后面我们学习的Fragment);
为了方便阅读,我们通常在jsx的外层包裹一个小括号(),这样可以方便阅读,并且jsx可以进行换行书写;
JSX中的标签可以是单标签,也可以是双标签;
✓ 注意:如果是单标签,必须以/>结尾;
{/* */}
◼ JSX嵌入变量作为子元素
情况一:当变量是Number、String、Array类型时,可以直接显示
情况二:当变量是null、undefined、Boolean类型时,内容为空;
✓ 如果希望可以显示null、undefined、Boolean,那么需要转成字符串;
✓ 转换的方式有很多,比如toString方法、和空字符串拼接,String(变量)等方式;
情况三:Object对象类型不能作为子元素(not valid as a React child)
◼ JSX嵌入表达式
运算表达式
三元运算符
执行一个函数
<h2>{10+20}</h2> <h2>{age>=18? "成年人":"未成年人"}</h2> const liels=movies.map(movie=><li>{movie}</li>) getmoviels(){ const liels=this.state.movies.map(movie=><li>{movie}</li>) return liels } <h2>{this.getmoviels()}</h2>
//this绑定的三种方法 1、this.btnclick=this.btnclick.bind(this) 2、btn3click=()=>{ console.log(this) } 3、先定义函数 btn3click(){ console.log(this) } <button onClick={()=>this.btn3click()}>1</button>//使用隐式绑定
btnclick(event,name,age){ console.log("btnclick",event,this) console.log(name,age) } //第一种 <button onClick={this.btnclick.bind(this,"boke",20)}>2</button> //第二种 <button onClick={(event)=>this.btnclick(event,"grb",21)}>3</button>
条件渲染
在vue中,我们会通过指令来控制:比如v-if、v-show;
在React中,所有的条件判断都和普通的JavaScript代码一致;
◼ 常见的条件渲染的方式有哪些呢?
◼ 方式一:条件判断语句
适合逻辑较多的情况
◼ 方式二:三元运算符
适合逻辑比较简单
◼ 方式三:与运算符&&
适合如果条件成立,渲染某一个组件;如果条件不成立,什么内容也不渲染;
◼ v-show的效果
主要是控制display属性是否为none
const {isready}=this.state let showelent=null if(isready){ showelent= <h2>开始</h2> }else{ showelent= <h1>结束</h1> } return( <div> {showelent} </div> )