news 2026/7/8 7:28:27

React 极简入门:变量与状态管理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
React 极简入门:变量与状态管理

React 极简入门:变量与状态管理

想学 React,总得从最基础的地方上手。这里整理了几个核心概念:从怎么在页面上显示一个变量,到怎么用状态管理让页面动起来。没有废话,直接看代码。

1. 基础渲染:大括号插值

React 用 JSX 语法写界面。要在 HTML 标签里塞个变量进去,直接套上大括号{}就行。不管是用在标签内容上,还是属性上,写法都一样。

function App() { const divContent = '标签内容'; const divTitle = '标签标题'; return ( <div title={divTitle}>{divContent}</div> ); } export default App;

2. 条件渲染

遇到需要根据不同情况显示不同内容的场景,不用找特殊的 React 语法。直接在组件里写原生 JS 的if/else判断即可。

function App() { const divTitle = '标签标题'; const flag = true; let divContent = null; if (flag) { divContent = <span>flag为true</span>; } else { divContent = <p>flag为false</p>; } return ( <div title={divTitle}> {divContent} </div> ); } export default App;

3. 列表渲染:用 map 遍历

渲染列表,React 的常规操作是原生的map循环。为了不弄乱 DOM 结构生成多余的<div>,一般用Fragment当作一个隐形的包裹层。

import { Fragment } from "react"; 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;

别忘了给每个列表最外层元素加上独一无二的key,这能省掉后续 React 更新 DOM 时的很多麻烦。

4. 绑定事件

React 里的事件名全是大驼峰(比如onClick),后面直接跟上处理函数。

function App() { function handleClick(e) { console.log('点击了按钮', e); } return ( <button onClick={handleClick}>按钮</button> ); } export default App;

5. 初识 useState

先看个反例。很多人刚上手会这么写:

function App() { let divContent = '默认内容'; function handleClick() { divContent = '新内容'; // 变量变了,页面不动 } return ( <> <div>{divContent}</div> <button onClick={handleClick}>按钮</button> </> ); }

普通变量改了就改了,React 根本不会去重新渲染页面。想要画面跟着数据动,得用useState

import { useState } from "react"; function App() { const [content, setContent] = useState('标签的默认内容'); function handleClick() { setContent('新内容'); // 这样写,页面才会更新 } return ( <> <div>{content}</div> <button onClick={handleClick}>按钮</button> </> ); } export default App;

6. 更新对象状态

状态数据是对象时,不能直接改原对象里的属性。稳妥的做法是新建个对象塞给setData。这里最常用的就是展开运算符...

import { useState } from "react"; 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> </> ); } export default App;

7. 更新数组状态

跟对象一样,别去用push之类直接修改原数组的方法。老老实实地生成一个新数组。

追加元素(展开运算符):

import { useState } from "react"; let nextId = 4; // 注意:把 id 变量提到组件外面,防止组件重新渲染时被重置 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> )); function handleClick() { // 老元素展开,新元素接在后面 setData([ ...data, { id: nextId++, name: '小花猫' } ]); } return ( <> <ul>{listData}</ul> <button onClick={handleClick}>按钮</button> </> ); } export default App;

删除元素(filter 方法):

import { useState } from "react"; 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> )); function handleClick() { // 筛掉 id 是 2 的,留下其余的生成新数组 setData(data.filter(item => item.id !== 2)); } return ( <> <ul>{listData}</ul> <button onClick={handleClick}>按钮</button> </> ); } export default App;

只要摸清了useState操作对象和数组的这套“不可变”逻辑,React 基础就算及格了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/8 7:27:01

番茄小说下载器完整指南:三步永久保存你的数字图书馆

番茄小说下载器完整指南&#xff1a;三步永久保存你的数字图书馆 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 你是否曾因网络信号不佳而中断阅读&#xff1f;是否担心喜爱的小说突然下架…

作者头像 李华
网站建设 2026/7/8 7:24:02

从雁塔到碑林,西安零售门店的巡检意识在变

西安的零售门店圈子&#xff0c;这几年正在经历一场静悄悄的管理升级。从雁塔区的商场专柜到碑林区的社区便利店&#xff0c;越来越多的品牌开始引入第三方巡检。以前大家觉得巡检是大型超市的专利&#xff0c;现在小到一个几十平米的零食店&#xff0c;也开始定期做巡检。这个…

作者头像 李华
网站建设 2026/7/8 7:23:59

AltDrag完全指南:用Alt键彻底改变你的Windows窗口操作体验

AltDrag完全指南&#xff1a;用Alt键彻底改变你的Windows窗口操作体验 【免费下载链接】altdrag :file_folder: Easily drag windows when pressing the alt key. (Windows) 项目地址: https://gitcode.com/gh_mirrors/al/altdrag 你是否厌倦了在Windows中繁琐的窗口拖拽…

作者头像 李华
网站建设 2026/7/8 7:23:15

Jsxer:高效解码Adobe JSXBIN文件的终极工具

Jsxer&#xff1a;高效解码Adobe JSXBIN文件的终极工具 【免费下载链接】jsxer A fast and accurate JSXBIN decompiler. 项目地址: https://gitcode.com/gh_mirrors/js/jsxer 你是否曾经遇到过无法读取的Adobe JSXBIN二进制脚本文件&#xff1f;这些经过加密的文件让代…

作者头像 李华