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

vue转react问题汇总

一、添加样式

<img className="avatar" /> // 或者 const className = 'avatar' function Header() { return <div className={className}> 1 </div> }

二、回显数据

const user = { name: 'Hedy Lamarr', imageUrl: 'https://i.imgur.com/yXOvdOSs.jpg', imageSize: 90, }; export default function Profile() { return ( <> <h1>{user.name}</h1> <img className="avatar" src={user.imageUrl} alt={'Photo of ' + user.name} style={{ width: user.imageSize, height: user.imageSize }} /> </> ); }

在上面示例中,style={{}} 并不是一个特殊的语法,而是 style={ } JSX 大括号内的一个普通 {} 对象。当你的样式依赖于 JavaScript 变量时,你可以使用 style 属性。

三、条件渲染

let content; if (isLoggedIn) { content = <AdminPanel />; } else { content = <LoginForm />; } return ( <div> {content} </div> );

简单些

<div> {isLoggedIn ? ( <AdminPanel /> ) : ( <LoginForm /> )} </div> // 当你不需要 else 分支时,你也可以使用更简短的 逻辑 && 语法: <div> {isLoggedIn && <AdminPanel />} </div>

四、渲染列表

const products = [ { title: 'Cabbage', id: 1 }, { title: 'Garlic', id: 2 }, { title: 'Apple', id: 3 }, ]; const listItems = products.map(product => <li key={product.id}> {product.title} </li> ); function Header() { return ( <ul>{listItems}</ul> ); } // 或者 // 两种写法无区别,上面更清晰 // 必须添加key属性 export default function TodoHeader() { return ( <> {products .map((item, i) => { return ( <div key={item.id}>{item.title}</div> ) })} </> ) }

五、事件绑定&响应式

1、普通类型

export default function TodoHeader() { const [count, setCount] = useState(0); function handleChangeCount() { setCount(count + 1) } return <button onClick={handleChangeCount}> {count} </button> }

2、Object

import { useState } from 'react'; function App() { const [count, setCount] = useState({ value: 1 }); function handleChangeCount() { setCount({ value: count.value + 1 }); } return ( <div> <h1>{count.value}</h1> <button onClick={handleChangeCount}>+1</button> </div> ); } export default App;

3、Array

  • 新增

    const [list, setList] = useState([1,2,3]) // 1、 新增 arr.push(xxx) // 错误不会更新 // 正确 const [list, setList] = useState([1,2,3]) // 后面加 setList([...list, 4]) // 前面加 setList([4, ...list])
  • 删除(filter)

    setList(list.filter(item => item.id !== 2))
  • 修改某一项(map)

  • setList(list.map(item => item.id === 1 ? { ...item, name: '新名字' } : item ))
  • 清空 / 重置

setList([])
// 父组件 Parent.jsx import { useState } from 'react'; import Child from './Child'; function Parent() { const [childMsg, setChildMsg] = useState(""); // 1. 父组件定义接收子组件数据的函数 const getChildData = (data) => { console.log("收到子组件数据:", data); setChildMsg(data); // 更新父组件状态 }; return ( <div> <h2>父组件</h2> <p>子组件传来的数据:{childMsg}</p> {/* 2. 把函数传给子组件 */} <Child sendData={getChildData} /> </div> ); } export default Parent;
// 子组件 Child.jsx import { useState } from 'react'; function Child({ sendData,childMsg }) { const [inputVal, setInputVal] = useState(""); // 3. 子组件调用父组件传递的函数,传参 const sendToParent = () => { sendData(inputVal); // 把输入框的值传给父组件 }; return ( <div> <h3>子组件</h3> <input type="text" value={inputVal} onChange={(e) => setInputVal(e.target.value)} placeholder="输入要传给父组件的内容" /> <button onClick={sendToParent}>点击传给父组件</button> </div> ); } export default Child;
  1. 父传子:父组件把数据写在子组件标签上,子组件用props接收
  2. 子传父:父组件把函数传给子组件,子组件调用函数并传参

总结

  • 父 → 子props直接传数据
  • 子 → 父:父传回调函数,子调用函数传参
  • props 只读,子组件不能修改父组件的数据,只能通过回调通知父组件修改
http://www.jsqmd.com/news/616558/

相关文章:

  • 2026年镀锌水箱梯队名录:不锈钢消防水箱/农村化粪池/冷却塔维修/圆形冷却塔/地埋式一体化泵站/地埋式水箱/封闭冷却塔/选择指南 - 优质品牌商家
  • 2026年款式多的男童童装/大童童装厂家精选合集 - 行业平台推荐
  • 【CTFshow-pwn系列】03_栈溢出【pwn 061】详解:64位 PIE 环境下的 Ret2Shellcode 实战
  • Graphormer效果展示:金属配合物氧化还原电位预测与循环伏安图拟合
  • Spring_couplet_generation批量处理脚本编写:高效生成海量春联素材
  • 真机部署仅需几小时!PhyAgentOS开源项目,实现零代码跨本体迁移
  • 科哥二次开发!阿里通义Z-Image-Turbo WebUI保姆级教程:三大标签页功能详解
  • 2026年比较好的不锈钢清洗剂/钛板清洗剂/锅炉清洗剂多家厂家对比分析 - 品牌宣传支持者
  • AI员工上岗指南:如何准备你的组织迎接Agent化转型
  • 千问3.5-9B镜像快速体验:OpenClaw云端自动化入门
  • Qwen3.5-9B多场景落地:开发者写Python脚本、产品经理写PRD、教师出题批改
  • Qwen3-32B .NET应用开发:智能文档处理系统
  • 2026年比较好的泰兴高硼硅玻璃管/高硼硅玻璃管主流厂家对比评测 - 行业平台推荐
  • 在华为MetaERP中,多套账(如法定账、管理账、合并账等)之所以能实现高效、准确的自动对账,其根本原因在于它们并非独立生成,而是源于同一笔业务交易的“同源裂变”
  • Jimeng LoRA测试台新手指南:自然排序多版本,快速找到最佳模型
  • S2-Pro智能运维应用:自动分析日志文件并定位系统故障
  • 欢创科技冲刺港股:年营收6亿 利润率仅0.4% 东方富海是股东
  • 2026年口碑好的浙江室内儿童乐园/主题儿童乐园真实客观的推荐理由(1、2、3点) - 行业平台推荐
  • OpenClaw安全防护:限制Qwen3.5-9B文件访问范围的3种方法
  • 电机模型、电流环PI控制器、PLL锁相环的标幺化处理及采样时间详解
  • 最强8B多模态模型MiniCPM-V-2_6实战:一键部署,图片问答、视频理解全搞定
  • Springboot 实现多数据源(PostgreSQL 和 SQL Server)连接方
  • 2026年专业音响推荐榜解析:音响设备/Montarbo音响/Nettuno音响/PRS音响/ZOBO音响/舞台音响/选择指南 - 优质品牌商家
  • **发散创新:基于Python与TTS的语音合成系统实战解析**在人工智能快速发展的今天,**语音合成(Text-to-Spe
  • 2026年4月AI应用商业化标杆企业名录及能力解析 - 优质品牌商家
  • CAM++说话人识别系统入门指南:从部署到验证,手把手教学
  • SQL触发器导致死锁怎么排查_检查事务边界与锁竞争关系
  • 2026年热门的室内儿童乐园/亲子儿童乐园/浙江无动力儿童乐园不虚构、不夸大 - 行业平台推荐
  • MiniCPM-o-4.5-nvidia-FlagOS项目协作指南:基于GitHub的团队开发与CI/CD集成
  • 2026年有库存的夏季儿童家居服/儿童家居服两件套/春秋款家居服/宝宝家居服稳定供货厂家推荐 - 行业平台推荐