当前位置: 首页 > news >正文

React基础语法速览

一、项目创建

npm create vite

这里选择react即可,如图:

二、基本文件说明

react函数式编程时,用的是JSX语法进行开发的,这里注意,return时只能有一个根标签;

三、React核心语法

1.插值功能

        插值可以使用的位置有标签内容和标签属性处(相当于vue的:语法和{{}}语法)

效果:

 2.条件渲染

效果:

 

3.列表渲染
import { Fragment } from "react/jsx-runtime"

function App() {

  const list = [
    {
      name: '小吴',
      id: 1
    },
    {
      name: '小王',
      id: 2
    },
    {
      name: '小张',
      id: 3
    }]

  const listContent = list.map((item) => {
    return (
      <Fragment key={item.id}>
        <li>{item.name}</li>
        <li>-------------------------</li>
      </Fragment>
    )
  })

  return (
    <>
      <ul>
        {listContent}
      </ul>
    </>
  )
}

export default App

效果:

 

这里要注意:list.map中返回的也是一个JSX语法的字符串,所以要求也必须要有一个根标签,且列表渲染时要注意根标签上必须有一个key值,此时我们就可以使用Fragment来帮助我们,它等价于<></>(类型于vue中的template).

4.事件触发
import { useState } from "react"


function App() {

  const [content, setContent] = useState('标签的默认内容')

  function handleClick(e: React.MouseEvent<HTMLButtonElement>) {
    console.log('点击了',e)
    setContent('按钮被点击了')
  }

  return (
    <>
      <div>{content}</div>
      <button onClick={handleClick}>按钮</button>
    </>
  )
}

export default App

效果:

注意:这里只有用useState才可以进行响应式操作(相当于get/set方法)

对对象的操作:
import { useState } from "react"


function App() {

  const [data, setData] = useState({
    title: 'Hello React',
    content: '这是一个按钮'
  })

  function handleClick(e: React.MouseEvent<HTMLButtonElement>) {
    console.log('点击了',e)
    setData({
      title: 'Hello React!',
      content: '点击了按钮'
    })
  }

  return (
    <>
      <div title={data.title}>{data.content}</div>
      <button onClick={handleClick}>按钮</button>
    </>
  )
}

export default App

注意:这里如果感觉对象属性过多,可以使用展开运算符来方便操作(可以只修改一部分)

对数组进行操作:
import { Fragment, useState } from "react"


function App() {

  const [list,setList] = useState([
    {
      name: '小吴',
      id: 1
    },
    {
      name: '小王',
      id: 2
    },
    {
      name: '小张',
      id: 3
    }])

  const listData = list.map((item: any) => {
    return (
      <Fragment key={item.id}>
        <li>{item.name}</li>
      </Fragment>
    )
  })

  function handleClick(e: React.MouseEvent<HTMLButtonElement>) {
    console.log('点击了',e)
    const temp = list.filter(item => item.id !== 3)
    temp.push({
      name: '小刘',
      id: 4
    })
    setList([
      ...temp,
      {
        name: "小乔",
        id: 5
      }
    ])
  }

  return (
    <>
      <div>{listData}</div>
      <button onClick={handleClick}>按钮</button>
    </>
  )
}

export default App

效果:

相关文章:

  • 每日一题力扣2960.统计已测试设备c++
  • 从零开始:使用 Cython + JNI 在 Android 上运行 Python 算法
  • C++进阶(一)
  • 智能照明与新能源集成的精细化能效管理实践
  • 蓝桥杯备赛-DFS-有奖问答
  • Android中的setInheritRT
  • JAVA_数据结构_栈和队列
  • 实现分布式锁需要考虑哪些问题?
  • 组播策略路由选择
  • SSH密钥认证 + 文件系统权限控制 + Git仓库配置+封存与解封GIT仓库
  • mac环境下chatwoot客服聊天docker本地部署+对接通义千问Qwen2.5
  • RAG 架构地基工程-Retrieval 模块的系统设计分享
  • 安卓15/aosp15/lineage21使用brunch编译老是报错OOM内存不足
  • 怎样才能把网页数据保存到网络上?
  • 【redis】在 Spring中操作 Redis
  • 设计模式之命令模式:原理、实现与应用
  • u-net系列算法
  • 工作相关记录
  • SpringSecurity——前后端分离登录认证
  • 区块链赋能项目包装融资:开启融资新范式
  • 云南一男子持刀致邻居3死1重伤案二审开庭,未当庭宣判
  • 竞彩湃|热刺、曼联一周双赛不易,勒沃库森能否欢送阿隆索
  • 湖北宜昌:在青山绿水间解锁乡村振兴“密码”
  • 壹基金发布2024年度报告,公益项目惠及937万人次
  • 欧盟公布对美关税反制清单,瞄准美国飞机等产品
  • 本科生已发14篇SCI论文被指由其教授父亲挂名,重庆大学成立工作组核实