react

80 阅读1分钟

react

一、题外的一些问题

安装包一般用yarn比较好,npm会丢失包,yarn add 名字就可以下载

二、react的基本语法

1.jsx,或者tsx就是标签和js都在一起,标签()括起来,编译的过程中会被babel解析器解析

2. 循环渲染

主要利用map

 const list =[{name:'小明',id:20},{name:'小红',id:15},{name:'小兰',id:22},]
  
 function mingzi (){
   return (
     <div className="guoqu">{list.map(item=>{
        return <span key={item.id} >{item.name}</span>
     })}</div>
   )
 }

3.条件渲染

a. 可以利用三元表达式,也可以用if条件,如果标签结构很复杂可以用()括起来。

  const list =[{name:'小明',id:20,switch:true},{name:'小红',id:15,switch:false},{name:'小兰',id:22,switch:true},]
  
 function mingzi (){
   return (
   
   //用的三元表达式控制的
   
     <div className="guoqu">{list.map(item=>{ 
        <span key={item.id} >{item.switch?item.name:null}</span> 
     })}</div>
   
   //用的条件语句判断的
   
     <div className="guoqu">{list.map(item=>{
        if(item.switch){
        <span key={item.id} >{item.name}</span>
        } 
     })}</div> 
   )
 }


b.短路运算

image.png

c.如果更加复杂的模板直接用函数包裹起来

1651720182(1).jpg

1651720283(1).jpg

3.jsx的样式控制

a.第一种是内联样式 直接style,里面的是双大括号,第一个{}是识别为对象,第二个是写属性和属性名

function app (){
    return (<div>
     <p style={{color:red}} ></p>
    </div>)
}

b.第二种是类名样式

直接用className

c.动态类名的添加

可以利用三元来控制,还有复杂的方法来设置

const flag =true
function app(){
   return (
     <div className={flag?'activity':''} ></div>
   )
 
}

4.jsx注意事项

a.幽灵节点

react独有的,return()出去的结构必须只有一个根节点,所以可以直接写一个空的节点来解决

function app(){
    return (
      < >
        <div>akjsdh</div>
        <div>akjsdh</div>
      </>
    )
}

b.所有标签都闭合,或者自闭和

c.jsx更接近js语法,所有的都是托付命名,eg class -> className 或者for ->htmlFor

d. jsx支持多行换行,但是要用()包裹,不至于出现语法错误

e.www.bilibili.com/video/BV1Z4… vscode的插件,react有提示