REACT学习DAY02(恨连接不上服务器)

devtools/2025/2/24 4:52:05/

受控表单绑定

概念:使用React组件的状态(useState)控制表单的状态

1. 准备一个React状态值

const [value,setValue] = useState('')

2. 通过value属性绑定状态,通过onChange属性绑定状态同步的函数

<input
type="text"
value={value}
onChange={(e) => setValue(e.target.value)}
/>

React中获取DOM

在 React 组件中获取/操作 DOM,需要使用 useRef React Hook钩子函数,分为两步:

1. 使用useRef创建 ref 对象,并与 JSX 绑定

const inputRef = useRef(null)
<input type="text" ref={inputRef} />

2. 在DOM可用时,通过 inputRef.current 拿到 DOM 对象

八老师说贺越说要先看千锋捏

所以转战 了

感觉自己有点理解了react基本使用?

 这他喵不是和黑马是两个东西吗

当时豆包建议我下的

这个脚手架需要较高版本的Node.js(14.18+,16+)

然后可以

npm create vite@latest

在安装的时候可以选JS或者JS+SWC

所以我们选择JS+SWC

 在文件上面vite.svg是没有被编译过的

使用npm run build就是把它给打包

逆天追踪

已经取消了

只能说我的服务器挂了和我也脱不开关系

ESLint配置与Prettier配置

ESLint是代码规范插件

npm run lint
vite-plugin-eslint

Prettier是代码格式化插件

下载一个这个东西

 然后还是按Alt+Shift+F就格式化了

React模块与react-dom模块分别起什么作用

react模块有核心功能和组件

react-dom模块是操作浏览器DOM,react-dom/server

JSX与HTML之间写法的区别

首先是标签要小写、必须闭合

然后是类选择器要写成className

for属性要换成htmlFor

<label htmlFor="elem">用户名</label>

属性是采取驼峰命名法

大括号使用JS

但是对象和函数不能直接放到JSX的{}中

属性可以使用 大括号渲染

只有唯一的根元素

import { Fragment } from 'react'

这个相当于一个容器,简写就是空箭头

<></>

区别是Fragment可以添加key属性

行间样式、全局样式、局部样式的使用

function App(){return(<div style={{width:'100px',height:'100px',background:'red'}}>hello</div>)
}export default App

写的东西最后会通过脚手架编译成新的东西

引用的话需要这样写:

<div className={style.box2}>aaa</div>
<div className={style['head-title']}>bbbbb</div>

当把配置改一下之后就好用了,这是vite.config.js:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react-swc'
import eslintPlugin from 'vite-plugin-eslint'// https://vite.dev/config/
export default defineConfig({plugins: [react(),eslintPlugin({include: ['src/*.jsx', 'src/**/*.jsx'],}),],css:{modules:{localsConvention:'camelCase'}}
})

把它变成这样加一个css之后就可以使用驼峰命名使用引入的样式了

支持sass预处理和classnames模块的使用

怎么支持预处理呢?

执行一下这个命令:

npm install sass

每一次的旋转都是对我小心脏的锻炼

就怕又断联了

sass.scss

$bg:red;.box3{background-color: $bg;
}

classname模块又是在干嘛的呢?

继续添加一个包:

npm install classnames

import classNames from 'classnames'function App(){const myClass = classNames({box1:true,box2:false,})return(// <div className={ myClass.join(' ')}>//     Hello App// </div><><div className={myClass}>hello App</div></>)
}export default App

还可以用其他的:

React元素是如何添加事件操作

event合成事件,可以解决一些事件的处理

事件委托到容器元素

如何根据不同的条件进行不同的内容渲染

function App(){let count = 0return (<div>Hello App<br />{count >3 ? <div>hello react</div> :  <p>hi JavaScript</p>}</div>)
}
export default App

别的类型+空字符串是转换成字符串类型

但是对象加上空字符串转成的是不同的格式

对一个数据集合进行批量渲染

循环语句:for,while

JSX中默认对数组进行join()操作

数组方法:map

列表渲染需要添加key属性。这些key会告诉react,每个组件里面对应着数组的哪一项,可以帮助React推断发生了什么,从而得以正确地更新DOM树


// function App(){
//     const list = ['aaaa','bbbb','cccc']
//     for(let i=0;i<list.length;i++)
//     {
//         list[i] = <li>{list[i]}</li>
//     }
//     return (
//         <div>hello App
//             hello App
//             <br />
//             <ul>
//                 {list}
//             </ul>
//         </div>
//     )
// }// export default Appfunction App(){const list = ['aaaa','bbbb','cccc']// for(let i=0;i<list.length;i++)// {//     list[i] = <li>{list[i]}</li>// }return (<div>hello App<br /><ul>{ list.map((item,index)=><li key={index}>{item}</li>) }</ul></div>)
}export default App

两种实现组件的标记写法

const Qf = {Welcome() {return <div>hello Welcome</div>},
}const { Welcome } = Qffunction App() {return (<div>hello App<Qf.Welcome></Qf.Welcome><Welcome></Welcome></div>)
}export default App

还有一种函数的写法

react/display-name 规则要求每个 React 组件都应该有一个显示名称,在开发者工具和错误信息里,显示名称有助于识别组件。对于函数式组件,通常函数名会被当作显示名称,但对于像 Qf.Welcome 这样的嵌套组件,ESLint 可能无法自动识别显示名称。

所以需要手动设置(我看千峰的上面没有要求这个,可能是我用的这个版本高)

const Qf=()=>{return (<div>hello Qf</div>)
}// 手动设置 Qf 组件的显示名称
Qf.displayName = 'Qf';Qf.Welcome=()=>{return (<div>hello Welcome</div>)
}// 手动设置 Qf.Welcome 组件的显示名称
Qf.Welcome.displayName = 'Qf.Welcome';function App() {return (<div>hello App<Qf/><Qf.Welcome></Qf.Welcome></div>)
}export default App

http://www.ppmy.cn/devtools/161294.html

相关文章

客服系统自动化方案:揭秘全渠道智能服务解决方案 vx: haotsh

当电商GMV增速放缓至个位数&#xff0c;直播转化率跌破3%的行业寒冬&#xff0c;我们打造的智能客服系统正在创造日均处理270万次咨询的行业奇迹。本文深度解析这套融合RPA黑科技与大模型推理能力的解决方案&#xff0c;看中国企业如何用「东方智慧」重构客户服务生态。 一、破…

React源码揭秘 | 启动入口

本文主要介绍React18版本的初始化启动过程&#xff0c;包含ReactElement元素的创建&#xff0c;createRoot如何创建根节点&#xff0c;以及Fiber树的基本结构&#xff0c;算是揭秘React核心原理的前置知识总结。 本系列文章都基于此项目&#xff1a; GitHub - Gravity2333/My-…

vue计算属性与侦听器的区别

在 Vue 中&#xff0c;计算属性&#xff08;computed properties&#xff09;和 侦听器&#xff08;watchers&#xff09;都可以用来监听数据的变化并做出响应&#xff0c;但它们的应用场景和功能有所不同。下面是两者的主要区别&#xff1a; 1. 计算属性&#xff08;Computed…

什么AGI

通用人工智能&#xff08;Artificial General Intelligence&#xff0c;AGI&#xff09;是人工智能领域的一个概念&#xff0c;指能够在广泛的认知任务中展现出与人类相当&#xff0c;甚至超越人类能力的智能系统。与当前大量应用的、针对特定任务设计的狭义人工智能&#xff0…

Linux自启动fastapi服务

步骤一 在/etc/systemd/system/文件夹下创建pyod.service&#xff08;其中/path/to/conda/bin/activate要改为activate实际存放位置&#xff0c;例如miniconda的实际存放位置为/root/miniconda3/bin/activate&#xff09; [Unit] DescriptionPyOD Uvicorn Service Afternetwo…

蓝桥杯宝石组合(数论,因数)

输入样例&#xff1a; 5 1 2 3 4 9 输出样例&#xff1a; 1 2 3 思路&#xff1a; 如果直接按题意暴力的话&#xff0c;只能过30%&#xff0c;所以应该推导出更简便的公式&#xff0c;推导如下 或者多带几组数据会发现 S与三个数的最大公因数程正比&#xff0c;所以只要在这组…

动静态链接与加载

目录 静态链接 ELF加载与进程地址空间&#xff08;静态链接&#xff09; 动态链接与动态库加载 GOT表 静态链接 对于多个.o文件在没有链接之前互相是不知到对方存在的&#xff0c;也就是说这个.o文件中调用函数的的跳转地址都会被设定为0&#xff08;当然这个函数是在其他.…

Three.js 快速入门教程【二】透视投影相机

系列文章目录 系列文章目录 Three.js 快速入门教程【一】开启你的 3D Web 开发之旅 Three.js 快速入门教程【二】透视投影相机 Three.js 快速入门教程【三】渲染器 Three.js 快速入门教程【四】三维坐标系 Three.js 快速入门教程【五】动画渲染循环 Three.js 快速入门教程【六…