首页 > 其他分享 >React核心语法

React核心语法

时间:2024-06-08 17:34:24浏览次数:26  
标签:function 语法 const name 核心 App React return id

目录

一、项目搭建

二、JSX

三、插值

3.1条件渲染

3.2列表渲染

四、事件

五、useState状态处理

5.1对象形式的状态

5.2数组形式的状态


作为一个菜菜菜菜鸟,在之前的学习中,一直学习和使用的是VUE框架,在应聘实习公司的过程中,要求使用React框架,于是对自己的学习进行归纳总结,实现React语法入门。

react图片

一、项目搭建

  1. 打开终端
  2. 输入npx create-react-app 项目名(英文)
  3. cd 项目名    :此步为进入项目目录
  4. npm start     :此步为启动项目
  5. 打开浏览器查看项目

如果是启动已有项目,则为打开终端,再输入以下两条命令:

npm i
npm run start

对于react项目,于我们初学者而言,可以将src文件夹的App.js以及index.js视为最重要的两个文件,其他文件都可以将其删掉,并将相关的引入删除。(我懒得删)

二、JSX

jsx将js语法与html语法书写在一起,相当于模板语法。语法内容有以下几点:

  1. 函数组件return后的小括号不可遗漏,html在函数的返回值中
  2. jsx只能返回一个根元素。解决措施1:再在外面加一层容器;解决措施2:最外层加空标签<></>
  3. 无论是单标签还是多标签,需要正确的闭合

三、插值

function App(){
    const DivContent='标签内容'
    const DivTitle='标签标题'

    return {
        <div>{DivContent}</div>
 }
}

上述代码,浏览器即可显示“标签内容”,已“{ }”获取到了值。还有另一种方式,在标签属性中获取,形如<div title={DivTitle}>hello world!</div>,注意:{DivTitle}不能打双引号,不然就变成普通的文本值了。

3.1条件渲染

jsx把html与js混写,传统DOM方式会需要写个字符串的结构进行拼接之类的操作,变量可以赋值为null或者空字符串,这是jsx的简便之处。

3.2列表渲染

function App() {
  const list=[
    {id:1,name:'张三'},
    {id:2,name:'李四'},
    {id:3,name:'王五'}
  ]
  const listContent=list.map(item => (
    <li key={item.id}>{item.name}</li>
  ))
  return {
    <ul>{listContent}</ul>
  }
}

export default App;

key的设置帮助我们在任何情况下确认渲染的正确性,每一元素需要唯一的key属性,保证在当前DOM中数据的唯一性,在同级中是唯一的即可。注意:不能根据下标设置,下标随着元素变化也会发生变化,更建议的是将元素设置为以上代码块的形态。

当进行循环生成时,比如在每一个<li>下加上一段分割线,这是便使用<Fragment></Fragment>标签包裹住需要进行循环的元素,再将id值设置为<Fragment>的属性。

function App() {
  const list=[
    {id:1,name:'张三'},
    {id:2,name:'李四'},
    {id:3,name:'王五'}
  ]
  const listContent=list.map(item => (
   <Fragment key={item.id}>
    <li>{item.name}</li>
    <li>-------------</li>
   </Fragment>
  ))
  return {
    <ul>{listContent}</ul>
  }
}

export default App;

四、事件

function App() {

  function handleClick(e){
    console.log('触发了事件',e)
  }
  
  return {
    <button onClick={handleClick}>一个平平无奇的按钮</button>
  }
}

一个简单的点击事件设置如以上代码。

五、useState状态处理

以字符串类型的状态为例:

function App() {

  const [content,setContent]=useState('默认内容')
  function handleClick(e){
    setContent('新内容')
  }
  
  return {
    <>
     <div>{content}</div>
     <button onClick={handleClick}>一个平平无奇的按钮</button>
    </>
  }
}

在vue中可以声明一种响应式数据,响应式数据能驱动页面内容进行更新,减少DOM操作。在react中,函数式组件默认是没有这种响应式状态机制的,这时,使用useState函数,需要传进去一个参数,为数据初始值,返回一个数组,包含content、setContent两个内容。content、setContent可以理解为一个用来读、一个用来改。

5.1对象形式的状态

代码示例为对关联元素进行更新,且只更新title,注意:setData内需要传入所有参数,避免新数组替换旧数组,可使用...data进行所有旧属性值的引进,如遇相同元素的赋值,后面的语句覆盖前面的语句。即:新属性写在后面。

function App() {

  const [data,setData]=useState({
    title:'默认标题',
    content:'默认内容'
  })
  function handleClick(){
    setData({
      ...data,   //引进旧属性值
      title:'新标题'
    })
  }
  
  return {
    <>
     <div title={data.title}>{data.content}</div>
     <button onClick={handleClick}>一个平平无奇的按钮</button>
    </>
  }
}

5.2数组形式的状态

function App() {

  const [data,setData]=useState([
    {id:1,name:'张三'},
    {id:2,name:'李四'},
    {id:3,name:'王五'}
  ])
  const listData=data.map(item => ( 
     <li key={item.id}>{item.name}</li> 
   ))

  let id=3
  function handleClick(){
    setData([
      ...data,   //引进旧属性值
     {id:++id,name:'小美'}
    ])
  }
  
  return {
    <>
     <ul>{listData}</ul>
     <button onClick={handleClick}>一个平平无奇的按钮</button>
    </>
  }
}

还可使用filter()函数之类过滤特定元素。以上便是react核心语法知识,如有错误,欢迎指正!

冲冲冲!

标签:function,语法,const,name,核心,App,React,return,id
From: https://blog.csdn.net/m0_74355933/article/details/139504064

相关文章

  • 蚁群优化算法优化PID---核心期刊论文复现
      针对传统的PID控制器参数多采用试验加试凑的方式由人工进行优化提出了一种新型的基于蚁群算法的PID参数优化策略.蚁群算法是近几年优化领域中新出现的一种仿生进化算法该算法采用分布式并行计算机制.在简要介绍蚁群算法基本思想的基础上推导了蚁群算法PID参数优化方法......
  • 算法人生(21):从“React框架”看“情绪管理”
    说起React框架,我们知道它是一种由Facebook开发和维护的开源JavaScript库,主要用于构建用户界面,特别是单页应用程序(SPA)。React框架围绕组件化,即把用户界面拆分为可复用的独立组件,每个组件负责管理自身的状态和属性,以此来提高代码的可维护性和可复用性。React框架的核心思想是基......
  • SELinux策略语法以及示例策略
    首发公号:Rand_csSELinux策略语法以及示例策略本文来讲述SELinux策略常用的语法,然后解读一下SELinux这个项目中给出的示例策略安全上下文首先来看一下安全上下文的格式:user:role:type:level每一个主体和客体都有一个安全上下文,通常也称安全标签、标签,由4部分......
  • spring和Mybatis的核心配置文件
    目录四、核心配置文件详解五、MyBatis获取参数值的两种方式5.1、搭建新的module:mybatis_parameter5.2、单个字面量类型的参数5.3、多个字面量类型的参数5.3、map集合类型的参数5.4、实体类类型的参数用的较多5.5、使用@Param标识参数四、核心配置文件详解<?xmlversion="1.0"......
  • 05C零碎语法
    C零碎语法目录文章目录C零碎语法1.函数指针2.回调函数3.数据拷贝3.1静态内存分配![请添加图片描述](https://img-blog.csdnimg.cn/direct/54d44e32bb7944f0866d4ca1e2667ce8.png)###4.1动态内存分配字符串6.sizeof()和strlen()的区别7.strcpy()/strncpy()函数7.1**s......
  • 从0开发一个Chrome插件:核心功能开发——背景脚本
    前言这是《从0开发一个Chrome插件》系列的第七篇文章,本系列教你如何从0去开发一个Chrome插件,每篇文章都会好好打磨,写清楚我在开发过程遇到的问题,还有开发经验和技巧。专栏:从0开发一个Chrome插件:什么是Chrome插件?从0开发一个Chrome插件:开发Chrome插件的必要知识从0开发......
  • 迅为全国产3A6000电脑硬件方案LoongArch架构核心主板
        龙芯3A6000+7A2000COME采用全国产龙芯3A6000处理器,龙芯3A6000是龙芯第四代微架构首款处理器,面向高端嵌入式计算机、桌面、服务器等应用。采用自主龙芯指令集(LoongArch™),基于全新研制的LA664处理器核,龙芯3A6000处理器性能在龙芯3A5000处理器基础上实现大幅......
  • React Hooks路由传参
    场景:如何把想要的参数带到跳转过去的页面里呢?很简单上代码:在你需要跳转的页面上引入Link用来跳转使用Link跳转并携带参数然后需要什么参数就带什么过去喽 这里record里面存的就是我的数据我只需要id和state然后到你跳转过去的页面(也就是需要使用这个页面的这俩参数的页......
  • ReactNative 环境设置失败
    ErrorImageIgetthiserrorWhilesettinguptheenviromentofReactnative.我在设置Reactnative环境时遇到了这个错误。Iwanthelpwhoknowreactnativeverywell.TheerrorIhaveattchedseeandexplanemewhatistheproblem.Thiserror......
  • React Native:尝试使用手势处理使文本组件可拖动时出现渲染错误
    我正在ReactNative应用程序中开发一项照片编辑功能,用户可在其中添加可拖动的文本覆盖。我使用钩子来管理文本块的位置,并通过手势处理来更新它们。但是,当我尝试在手势过程中更新这些文本元素的位置(例如拖动)时、我遇到了一个呈现错误:"呈现的钩子比上一次呈现时多。我怀......