掌握React的基本使用,重塑前端开发

Plasmic:基于React的可视化构建器,重塑前端开发与设计协作范式 在现代Web开发中,组件化与前端工程化是提升开发效率、保障代码质量的核心实践。其原理在于通过可复用的UI单元和系统化的构建流程,实现关注点分离与团队高效协作。这一理念的技术价值在于,它能够将设计师的创意快速、精准地转化为可运行的代码,从而弥合设计与开发之间的鸿沟。其典型应用场景包括营销页面、后台管理系统和需要快速迭代的内容型站点。本文探讨的Plasmic平台,正是这一理念的工程化体现,它作为一个基于React的可视化构建器,通过**代码组件**机制和**样式令牌**系统,让开发者能够以“所见即所得”的方式构 阅读详情

1. Handling Events

Html中处理添加事件:

<a href="#" onclick="console.log('The link was clicked.'); return false">
  Click me
</a>

React中:

function ActionLink() {
  function handleClick(e) { 
      e.preventDefault();  
      console.log('The link was clicked.');  
  }
  return (
    <a href="#" onClick={handleClick}> Click me </a>
  );
}

2. Conditional Rendering

  • 根据不同条件,渲染不同的组件

  • 如果组件的返回值为null,则不渲染该组件

function UserGreeting(props) {
  return <h1>Welcome back!</h1>;
}

function GuestGreeting(props) {
  return <h1>Please sign up.</h1>;
}

function Greeting(props) {
  const isLoggedIn = props.isLoggedIn;
  if (isLoggedIn) {
    return <UserGreeting />;
  }
  return <GuestGreeting />;
}

ReactDOM.render(
  // Try changing to isLoggedIn={true}:
  <Greeting isLoggedIn={false} />,
  document.getElementById('root')
);

3. Lists and Keys

React中渲染列表,简单粗暴:

function NumberList(props) {
  const numbers = props.numbers;
  const listItems = numbers.map((number) =>
    <li key={number.toString()}>{number}</li>
  );
  return (
    <ul>{listItems}</ul>
  );
}

const numbers = [1, 2, 3, 4, 5];
ReactDOM.render(
  <NumberList numbers={numbers} />,
  document.getElementById('root')
);

That it is! cool!

注意遍历时要给element加key属性,否则控制台会报警告。

4. Forms

An input form element whose value is controlled by React in this way is called a “controlled component”

class NameForm extends React.Component {
  constructor(props) {
    super(props);
    this.state = {value: ''};

    this.handleChange = this.handleChange.bind(this);
    this.handleSubmit = this.handleSubmit.bind(this);
  }

  handleChange(event) {
    this.setState({value: event.target.value});
  }

  handleSubmit(event) {
    alert('A name was submitted: ' + this.state.value);
    event.preventDefault();
  }

  render() {
    return (
      <form onSubmit={this.handleSubmit}>
        <label>
          Name:
          <input type="text" value={this.state.value} onChange={this.handleChange} />
        </label>
        <input type="submit" value="Submit" />
      </form>
    );
  }
}

input,textarea,select都是以上述的方式被React控制的:value={this.state,value} onChange={this.handleChange}

5. Lifting State Up

将多个组件共享的数据提升至 离这些组件最近的共同父组件中进行管理。

There should be a single “source of truth” for any data that changes in a React application. Usually, the state is first added to the component that needs it for rendering. Then, if other components also need it, you can lift it up to their closest common ancestor. Instead of trying to sync the state between different components, you should rely on the top-down data flow.

官网demo是个非常好的例子:

在这里插入图片描述

6. Composition vs Inheritance

Remember that components may accept arbitrary props, including primitive values, React elements, or functions.

React的组件的composition和props组合起来用,而不是用继承,如下demo:

function Dialog(props) {
  return (
    <FancyBorder color="blue">
      <h1 className="Dialog-title">
        {props.title}
      </h1>
      <p className="Dialog-message">
        {props.message}
      </p>
    </FancyBorder>
  );
}

function WelcomeDialog() {
  return (
    <Dialog
      title="Welcome"
      message="Thank you for visiting our spacecraft!" />
  );
}

7. Thinking In React

React change the way that Web apps should be build.

UI -> Web apps 四步:

  1. Break The UI Into A Component Hierarchy

    将UI结构拆解成组件结构

  2. Build A Static Version in React

    It’s best to decouple these processes because building a static version requires a lot of typing and no thinking, and adding interactivity requires a lot of thinking and not a lot of typing.

    这个阶段用不到state

  3. Identify The Minimal (but complete) Representation Of UI State

    找到state,即交互中哪些数据会改变

  4. Identify Where Your State Should Live

    将state放到合适的组件中维护

  5. Add Inverse Data Flow

    如果有反向数据流,即子组件影响父组件内的状态,传回调函数给子组件去影响父组件的值

更多issues

重塑前端开发新纪元!React 如何用“声明式魔法”颠覆全球开发者工作流 在互联网浪潮汹涌澎湃的今天,前端开发领域的技术迭代日新月异。而 Facebook 开源的,自诞生以来便以颠覆性的理念和强大的生态,彻底改变了开发者构建用户界面的方式。在 GitHub 上,React 项目斩获超,成为全球开发者争相学习与使用的“明星框架”。它究竟有着怎样的魅力,能在竞争激烈的前端世界中脱颖而出?本文将从核心原理、实战应用、生态拓展等维度展开,带你深入领略 React 的无限潜力。 阅读详情

相关推荐

让我看看反应!「Show me the React!」-crx插件

突出显示页面上的React组件。 突出显示页面中的ReactJS组件DOM React是一个流行的JavaScript库,用于构建用户界面。通过此扩展功能,可以轻松查看当前页面中的哪些元素正在使用React进行渲染。它有助于调试,但使用它也很有趣,可以快速了解不同站点如何使用React。例如,在facebook.com和instagram.com上试用它。 支持语言:English

不止是UI库:React如何重塑前端开发范式?

React作为现代前端开发的领军JavaScript库,以其声明式、组件化和高效的特性,成为构建交互式用户界面的首选。其核心特性包括组件化架构、JSX语法、虚拟DOM和声明式编程,这些特性共同提升了开发效率和代码可维护性。React的优势在于高效开发、卓越性能、庞大生态、活跃社区、跨平台能力和SEO友好性。随着Hooks的普及、元框架如Next.js和Remix的崛起,以及React Server Components等新技术的探索,React的生态系统持续扩展,为开发者提供了更多创新和优化的可能性。

950

Python 逆向解析知乎盐选反爬字体,实现内容精准还原

本文详细解析了知乎盐选内容的反爬字体机制,并提供了使用Python逆向解析WOFF字体文件的完整方案。通过fontTools库构建解码字典,实现乱码文本的精准还原,帮助开发者应对动态字体策略,同时强调法律与道德风险。

weixin_29268385的博客 1298

openage 逆向工程:伪造 AoC 多人游戏聊天消息(Chat Message Spoofing)协议分析

本文基于 openage 仓库 `doc/reverse_engineering/networking/` 系列文档中的《Spoofing and forging AoC chat messages》整理而成,完整复现了在 Age of Empires 2: The Conquerors(AoC)1.0c 多人对局中伪造聊天消息的完整链路:从测试环境搭建、协议字段逆向,到使用 Packet Sen

gitblog_00991的博客 461

Pytorch中CrossEntropyLoss()详解

交叉熵主要是用来判定实际的输出与期望的输出的接近程度。举个例子:在做分类训练的时候,如果一个样本属于第 K 类,那么这个类别所对应的输出节点的输出值应该为1,而其他节点的输出都为0,即 [0,0,1,0,….0,0] ,这个数组也就是样本的 Label,是神经网络最期望的输出结果。我们用交叉熵损失函数来衡量网络的实际输出与正确标签的差异,利用这种差异经过反向传播去更新网络参数。交叉熵:它主要刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近。

flyingluohaipeng的博客 3861

基于ADS\HFSS\Matlab的平面带通发夹滤波器设计

写在最前面,前段时间完成了一个小项目,实现13.5~14GHz的带通滤波器,算是第一个微波项目,在老师、学长、各种大神的指点下,最终完成了指标,想来这段时间收获良多,想到老师教导的,有能力的话要尽可能帮助别人,以及网络上很少面向于小白的教程,于是决定把自己做这个小项目的经过,一些关键步骤,还有软件操作和公式讲解都发出来,供大家指正借鉴。由于我目前大三,刚学习电磁场、微波工程等等,技术实在有限,同时这样是我第一次发帖子,只能尽可能的将自己确认过正确的内容,步骤以及一些经验写出来,供大家借鉴。

likaifeng12138的博客 5222

告别繁琐 CSS!Tailwind CSS 20天重塑你的前端开发工作流 (React/Vue 实战版)

apply实战练习: 使用@apply创建一个.btnclass。CSS 代码 (React/Vue 使用</button>实战练习: 添加自定义品牌颜色。代码theme: {extend: {colors: {brand: {},},},},React/Vue 使用</div>

nextera的博客 1165

STM32 移植LwIP 实现网线插拔自动恢复

STM32 移植LwIP 之后,能正常联网通讯,但是发现2个问题, 1、上电初始化前,未插入网线,之后就无法获取到IP地址(DHCP) 2、正常通讯过程中,拔掉网线,然后插回去,不知道如何复位 先看一下LWIP初始化代码 /** * LwIP initialization function */ int MX_LWIP_Init() { /* Initilialize the LwIP stack with RTOS */ tcpip_init( NULL, NULL );

tiantangmoke的博客 8074

Next.js 如何成功解决了React的致命缺陷?

React的出现颠覆了前端开发模式,但它自身存在一个显著的不足之处:客户端渲染(Client-Side Rendering,简称CSR)带来的性能、SEO与用户体验问题。作为专为解决这些痛点而诞生的框架,Next.js彻底改变了React的应用架构方式,让React从单纯的前端库,转型为真正完整的全栈应用框架。Next.js并非简单地修补了React客户端渲染模式的不足,它还通过服务端渲染、静态生成与增量更新的创新结合,创造了一套全新的、现代化的Web应用开发范式。

粉丝们务必加入微信粉丝群 806

【ShaderToy】开篇

写在前面呜呼,好久没有写博客了,好惭愧。题外话,感觉越大就越想家,希望可以一直和家人在一起,哪怕只是坐在一起不说话也觉得很温暖,一想到要分开眼睛就开始酸,哎。开学还是爬上来老实更新博客学习吧~今天爬上来一看,发现优快云的博客编辑终于更新了!进步总是好的,以前的编辑器实在很捉急。使用这种标记语言的确方便了很多,但好像颜色字体没法设置?程序员果然对美观没什么追求。ShaderToy如果你还没听过Sha

candycat 8万+

PCB设计中的规则优先级陷阱:为什么你的过孔总是十字连接?

本文深入解析PCB设计中Altium Designer规则优先级机制,解决过孔总是十字连接而非全连接的问题。通过分析铺铜连接原理和规则匹配逻辑,提供精确控制连接方式的技术实践,包括Custom Query使用和优先级最佳设置,帮助设计师避免常见陷阱,优化高速电路板的电气性能和制造可靠性。

banana的博客 469

# 发散创新:声明式UI如何重塑现代前端开发体验 在当前的前端生态中,**声明式UI**已经成为主流趋势。从React到Flut

传统命令式UI通过手动操作DOM或原生控件来更新视图(如),而声明式UI则基于状态驱动渲染——你告诉框架“当前应该显示什么”,它负责高效地完成DOM差异比对和重绘。@override?: Text("加载完成!"),```这段代码清晰表达了UI的状态变化逻辑,无需关心底层是如何切换组件的。这正是声明式思想的魅力所在:**关注“结果”,而不是“过程”**。---## 声明式UI的优势:不止于简洁### ✅ 自动化diff算法优化性能。

qq_46187594的博客 63

【QT】QtCreator卸载与安装(非正常状态)

QtCreator卸载与安装(非正常状态)

Cappuccino Blog 1万+

前端技术大盘点:React、Vue、Qwik (建议收藏)

前端开发领域的发展仿佛一场没有终点的技术马拉松,每年都有新的突破与变革令人目不暇接。2025 年也不例外,React、Vue 等主流框架依然稳居舞台中央,持续引领行业风潮;同时,一些新兴框架也以迅猛之势崭露头角,为开发者带来了更多元化的技术选项和前所未有的可能性。

小二丶的博客 2245

【OpenClaw从入门到精通】第15篇:国产芯片适配实战——昇腾/龙芯/天数智芯全流程跑通(2026实测版)

2026年国产芯片AI适配迎来爆发期,OpenClaw作为轻量化本地AI智能体,已实现华为昇腾、龙芯、天数智芯等主流国产平台的全流程适配。本文基于实测数据,从背景解析、核心原理、算法优化、实操部署四个维度,详细讲解OpenClaw在香橙派昇腾开发板、龙芯3B6000M、天数彤央TY1200及联想开天X7h的部署流程,同时提供统一工具玄武CLI的使用指南。文中包含完整代码、执行结果、避坑技巧及虚拟实战案例,兼顾新手入门与进阶提升,帮助读者快速掌握国产芯片上的本地AI部署能力,实现数据隐私保护与低成本AI落地。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1008

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

2025年10月前端开发与UI设计行业重磅新闻合集

2025年10月前端开发与UI设计行业迎来重大变革:React 19发布,首屏加载提升300%;Vue 4.0支持AI代码生成;Adobe以200亿美元收购Figma;AI设计工具用户增长200%;无代码平台用户突破5000万。这些技术突破使开发效率提升60%,设计效率提升50%,Web3前端框架成熟推动去中心化应用发展。行业正经历"技术民主化"革命,AI辅助开发、自动化设计和无代码平台显著降低技术门槛,企业开发成本降低20-40%,创新速度提升2-3倍,标志着前端与UI设计进入智能化新

成大事的博客 1422

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

前端技术演进时间点

2005年: AJAX 技术 2009年: Node.js 2013年:前后,前端三大框架 React.js/Angular/Vue.js 2014年:Serverless 下一代前端开发模式 说完了这几个阶段,可以看到,每一次前端开发模式的变化,都因某个变革性的技术而起。先是 AJAX,而后是 Node.js。那么下一个变革性的技术是什么?不言而喻,个人觉得就是 Serverless。 ...

Java_sanlin的博客 332

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

AI工作流实战:从原型到代码,1小时搞定两周前端开发!程序员/产品小白必看

摘要: 本文介绍如何利用AI工作流工具(Pixso、Stitch、AI Studio)将传统前端开发周期从数周压缩至1小时。通过建立设计基调、批量应用风格和AI生成代码三个步骤,实现从原型到可开发代码的一站式转换。文章分享了真实案例,展示了AI工具如何提升效率、优化协作,并探讨了产品经理角色向“直接创造者”的转变。作者建议从内部工具入手尝试AI工作流,拓展产品创新的可能性。

m0_74942241的博客 877

前端开发趋势分析

未来,开发者需更关注动态适配技术,如容器查询(Container Queries)和视口单位(Viewport Units)的进阶应用,确保页面在不同设备上实现无缝体验。在数字化浪潮的推动下,前端开发作为连接用户与产品的桥梁,正经历着前所未有的变革。本文将分析当前前端开发的几大核心趋势,帮助开发者把握未来方向,提升竞争力。随着用户对体验要求的提高,开发者需权衡性能与开发效率,选择适合的技术栈。无论是响应式设计、低代码平台,还是WebAssembly和AI技术,开发者都需要持续学习,紧跟趋势。

ujogok_360的博客 57

TypeScript - 一种思维方式

电影《降临》中有一个观点,语言会影响人的思维方式,对于前端工程师来说,使用 typescript 开发无疑就是在尝试换一种思维方式做事情。其实直到最近,我才开始系统的学习...

lentoo的博客 515

最新前端技术趋势

最先说的肯定是AI,22年末,23年初的chatgpt让AI话题火的一塌糊涂,同时也被认为是一次重大的技术革新,技术革新带来的就是重塑,一切都要被重塑,你的职业,你的工作。视觉层面的和已经对设计师产生了重大影响,而涉及到视觉ui层面的话,前端肯定是绕不开的部分。虽然目前没有直接的对前端产生影响,但下面的就一个就不只是对前端了,而是对整个程序员都产生了影响。看看醒目的文字就知道,程序员或多或少都会被影响了。还有什么等也都是AI辅助编程。更有。

Codefarmer_Ice的博客 122

【AI时代前端:框架不再是枷锁,混合融合才是未来】

AI时代正在重塑前端开发范式,智能工具链打破框架壁垒,推动"混合融合"成为未来趋势。通过VuReact等AI工具,可实现Vue与React组件无缝互转,解决跨框架复用、迁移和生态兼容三大痛点,效率提升80%+。未来前端将呈现三大趋势:混合渲染成为标配、框架底层趋同、开发者角色升级。AI让开发者摆脱框架束缚,聚焦业务价值,实现真正的"框架自由"。核心竞争力将转向拥抱工具和专注业务,而非单一框架精通。

牛爷爷的博客 198

AI程序员太卷了!Cursor多Agent同时“甩活儿“,人类只需“等它跑完再看答案“!

过去一年,编码 Agent 的变化速度,已经快到让人很难用“功能升级”来形容。如果把时间拨回到一年前,Agent 还主要停留在代码补全、对话式改几行代码的阶段;而今天,在 Cursor 内部,工程师已经开始同时运行多个 Agent 并行“甩活儿”,让它们在代码库中自主修改、调试、复盘,再由人类在最后阶段集中审核结果。开发者不再盯着 Agent 的每一步操作,而是开始习惯“等它跑完再看答案”。

m0_59163425的博客 1114

WEB的发展

Web 2.0 框架开发(Vue/React)+ API调用。Web 3.0 钱包集成 + 链上交互 + 复杂错误处理。Web 1.0 切页面(HTML/CSS)Web 3.0(2010s–至今·发展中)

2502_94654542的博客 67

如何重塑思维,轻松学会React

大家好,今天我们来聊聊如何通过重塑思维模式,轻松掌握React开发技能。React作为现代前端开发的热门框架之一,其核心功能和概念对很多初学者来说可能会有些难以理解。本文将带你深入解析React的精髓,帮助你快速上手。如果你不喜欢看文字内容,也可以直接观看我翻译整理的视频,学习效果会更佳哦!React的核心功能首先,React主要提供两大功能:组件(Components)和状态管理(State M...

前端达人 1075

深入学习React,重塑了我对React的理解

Diff 算法的源码链路很长,但若真的把源码中的逻辑要点作提取,你消化它们可能也就不过一杯茶的功夫。把握住 React15下的Diff 过程下,“树递归”这个特征,这就够了如果你学有余力,可以了解一下React 16 对调和实现setState 的变现会因调用场景的不同而不同在React 生命周期函数及合成事件中,他表现为异步在setTimeout ,setInterval,包括在DOM原生事件中,它都表现为同步,这些情景下的this.setStaet 会从React的异步管控下逃脱掉,从而表现出。

XiaoYi 691
上一篇: 搞懂React的state和生命周期函数(lifecycle methods)
下一篇: Vue组件注册
小菜101
博客等级 码龄10年 16粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值