React + TS 学习笔记

React是用于构建用户界面JavaScript库,[1]  起源于Facebook的内部项目,

1.声明式设计:React 使创建交互式 UI 变得轻而易举。为应用的每一个状态设计简洁的视图,当数据变动时 React能高效更新并渲染合适的组件

2.组件化: 构建管理自身状态的封装组件,然后对其组合以构成复杂的 UI。

3.高效:React通过对DOM的模拟,最大限度地减少与DOM的交互。

4.灵活:无论使用什么技术栈,在无需重写现有代码的前提下,通过引入React来开发新功能。

1,条件渲染

JSX方式

import React, { useState } from 'react'
export default function demo() {
    // const Loading = false
    const [Loading, setCollapsed] = useState(false);
    const loadingData = ()=>{
        if(Loading){
            return <div> 数据加载中。。。 </div>
        }
        else{
            return <div> 数据加载完成,稍后显示 </div>
        }
    }
    const loadingDataTo = Loading? <div> 数据加载中。。。 </div>:<div> 数据加载完成,稍后显示 </div>
    const btnclick = () => {
      setCollapsed(Loading => !Loading)

    }
  
  return (
    <div>
      <div>
      if渲染:{loadingData()}
      </div>  
        <div>
        三元渲染:{loadingDataTo}
        </div>
       <button onClick={btnclick} > 切换</button>
    </div>
   
  )
}

TSX方式

import React, { useState } from 'react'
const demo: React.FC = () => {
      const [Loading, setCollapsed] = useState(false);
          const loadingData = ()=>{
        if(Loading){
            return <div> 数据加载中。。。 </div>
        }
        else{
            return <div> 数据加载完成,稍后显示 </div>
        }
    }
    const loadingDataTo = Loading? <div> 数据加载中。。。 </div>:<div> 数据加载完成,稍后显示 </div>
    const btnclick = () => {
      setCollapsed(Loading => !Loading)

    }
   return (
    <div>
      <div>
      if渲染:{loadingData()}
      </div>  
        <div>
        三元渲染:{loadingDataTo}
        </div>
       <button onClick={btnclick} > 切换</button>
    </div>
   
  )
}

export default demo;

2,列表渲染

JSX方式

import React from 'react'

export default function demo() {
   const ListObjietArr = [
    {name:"王",age:23},
    {name:"王",age:22},
    {name:"王",age:25}
   ]
  return (
    <div>
      {
          ListObjietArr.map((item,index) => {
            return (
              <div key={index}>
               <span>{item.name}--{item.age}</span>
              </div>    
            )
          })
      }
    </div>
  )
}

TSX方式

import React, { useState } from 'react'
type Coordinates = {
    name:string;
    age: number;
  };

const demo: React.FC = () => {
 const [ListArr, setListArr] = useState([1,2,3]);
 const [ListObjietArr, setListObjietArr] =  useState<Coordinates[]>([
  {name:"王",age:23},
  {name:"王",age:22},
  {name:"王",age:25}
 ]);
 const btnArrclick = ()=>{
  let num = Math.random()
   num = num * 100
   num = Math.floor(num)
  ListArr.push(num)
  setListArr([...ListArr])
 }
 const btnObclick = ()=>{
  ListObjietArr.push({name:"陈",age:25})
  setListObjietArr([...ListObjietArr])
 }
 const depbtnArrclick = (index:number)=>{
  ListArr.splice(index, 1)
 setListArr([...ListArr])
 }
 const depbtnObclick = (index:number)=>{
  ListObjietArr.splice(index, 1)
  setListObjietArr([...ListObjietArr])
  
 }
return (
<div>
<div>  
  渲染数组对象:
{
          ListObjietArr.map((item, index) => {
            return (
                  <div key={index}>
                       <span >{item.name}-{item.age}-{index}</span>
                       <button onClick={()=>depbtnObclick(index)} > 删除</button>
                  </div>
                 
            )
          })
}
<button onClick={btnObclick} > 新增</button>

</div>
<div>  
  渲染数组:
{
          ListArr.map((item,index) => {
            return (
              <div key={index}>
               <span>{item}</span>
               <button onClick={()=>depbtnArrclick(index)} >删除</button>
              </div>    
            )
          })
}
</div>
<button onClick={btnArrclick} > 新增</button>

</div>
);
}
export default demo

React 18是React的最新版本,它引入了一些新的功能改进。在学习React 18时,你可以关注以下几个方面: 1. React组件:React组件是构建用户界面的基本单元。你可以使用React.createElement()函数或JSX语法来创建React元素组件。React元素是不可变的,而React组件是可复用的。\[1\] 2. react-dom.development.jsreact-dom/client模块:这些模块提供了处理真实DOM的功能,包括Diff算法渲染成真实DOM的过程。你可以在HTML文件中引入这些模块,并使用ReactDOM.createRoot()方法来渲染React的DOM。\[2\] 3. Hook:Hook是React中的特殊函数,它允许你在函数组件中添加状态其他特性。例如,useState是一个Hook,它可以让你在函数组件中添加状态。你可以使用useState来定义更新状态,并在组件中使用它们。\[3\] 在学习React 18时,你可以通过阅读官方文档、参考教程实践项目来深入了解这些概念用法。同时,你也可以与其他开发者交流分享经验,加深对React的理解。 #### 引用[.reference_title] - *1* *2* *3* [2023年React18笔记【慕课网imooc】【尚硅谷】【Vue3+React18 + TS4考勤系统】](https://blog.csdn.net/qq_28838891/article/details/124598439)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值