首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Solid.js 就是我理想中的 React

作者 | Nick Scialli 译者 | 王强 策划 | 闫园园 我大约在三年前开始在工作中使用 React。巧合的是,当时正好是 React Hooks 出来的时候。...我当时的项目代码库有很多类组件,总让我觉得很笨重。 我们来看看下面的例子:一个每秒递增一次的计数器。...于是我在 Solid 中解决了 React useEffect hook 的问题,而无需编写看起来像 hooks 的东西。我们可以扩展我们的计数器例子来探索 Solid 效果。...Solid 甚至没有重新运行同一 div 中较早的 console.log。 小 结 在过去的几年里我很喜欢使用 React;在处理实际的 DOM 时,我总感觉它有着正确的抽象级别。...话虽如此,我也开始注意到 React hooks 代码经常变得容易出错。我感觉 Solid.js 使用了 React 的许多符合人体工程学的部分,同时最大程度减少了混乱和错误。

1.9K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【React】1260- 聊聊我眼中的 React Hooks

    诚然,Hooks 解决了 React Mixins 这个老大难的问题,但从它各种奇怪的使用体验上来说,我认为现阶段的 Hooks 并不是一个好的抽象。...红脸太常见,也来唱个黑脸,本文将站在一个「挑刺儿」的视角,聊聊我眼中的 React Hooks ~ 「奇怪的」规矩 React 官方制定了一些 Hooks 书写规范用来规避 Bug,但这也恰恰暴露了它存在的问题...调用时序 在使用useState的时候,你有没有过这样的疑惑:useState虽然每次render()都会调用,但却可以为我保持住 State,如果我写了很多个,那它怎么知道我想要的是什么 State...,而且也没有语义上的区分(我们仅仅是给返回值赋予了语义),站在 useState的视角,React 怎么知道我什么时候想要name而什么时候又想要age的呢?...React Hooks 源码中,useRef仅在 Mount 时期初始化对象,而 Update 时期返回 Mount 时期的结果(memoizedState)。

    1.1K20

    SolidJS硬气的说:我比React还react

    大家好,我是卡颂。 最近刷推时,有个老哥经常出现在「前端框架」相关推文下。 ? 一副憨厚的样貌 我想:“老哥你哪位?” 一查,原来是个框架作者,作品叫SolidJS[1]。 ?...一定条件下的体积优势 你不需要为你没使用的代码付出代价 使用React时,即使没有用到Hooks,其代码也会出现在最终编译后的代码中。 而在SolidJS中,未使用的功能不会出现在编译后的代码中。...这为他带来了额外的好处:在真实项目(>120kb)中,SolidJS的代码体积比Svelte小25%左右。 还真是,因祸得福? ?...更快的更新速度 我们知道,在React与Vue中存在一层「虚拟DOM」(React中叫Fiber树)。...同样的例子放到React中,调用栈如下: ? 左中右红、绿、蓝框调用栈分别对应: 处理事件 对比并生成Fiber树 根据对比结果执行DOM操作 可见,SolidJS的更新路径比React短很多。 ?

    1.7K30

    我是怎样克服对 React 的恐惧,然后爱上 React 的

    如果你在两个月前问我对React的看法,我很可能这样说: 我的模板在哪里?javascript中的HTML在做些什么疯狂的事情?JSX开起来非常奇怪!快向它开火,消灭它吧! ?...那是因为我没有理解它. 我发誓,React 无疑是在正确的轨道上, 请听我道来. Good old MVC 在一个交互式应用程序一切罪恶的根源是管理状态。“传统”的方式是MVC架构,或者一些变体。...从这个示例中,看起来像是控制器有了状态,并且有类似模型的行为 - 或者也许是一个视图模型? 假设模型在其它的地方, 那它是如何保持与控制器的同步的呢? 我的头开始有点儿疼了....哥们,我希望某些大公司能组个超能天才开发者团来真正解决这个问题… 拥抱Facebook的React 事实证明他们做到了。React实现了一个虚拟的DOM,一种给我们带来的圣杯的利器....那我们还要在状态发生变化时记住这两个对整个 app 进行重新渲染的问题么? 这都是过去式了。 React 将状态映射到 DOM React 中只有虚拟 DOM 的渲染和比对是神奇的部分。

    96320

    我对 React 实现原理的理解

    React 是前端开发每天都用的前端框架,自然要深入掌握它的原理。我用 React 也挺久了,这篇文章就来总结一下我对 react 原理的理解。...所以 react 把渲染流程分为了两部分:render 和 commit。 render 阶段会找到 vdom 中变化的部分,创建 dom,打上增删改的标记,这个叫做 reconcile,调和。...react 和 vue 最大的区别在状态管理方式上,vue 是通过响应式,react 是通过 setState 的 api。我觉得这个是最大的区别,因为它导致了后面 react 架构的变更。...commit 阶段不用再次遍历 fiber 树,为了优化,react 把有 effectTag 的 fiber 都放到了 effectList 队列中,遍历更新即可。...我觉得理解了 vdom、jsx、组件本质、fiber、render(reconcile + schedule) + commit(before mutation、mutation、layout)的渲染流程

    1.2K20

    react学习(十) React 中的 context

    在平时工作中的某些场景下,你可能想在整个组件树中传递数据,但却不想手动地通过 props 属性在每一层传递属性,contextAPI 应用而生。...如果在你的项目中使用主题,基本是每个组件都需要;或者你在项目中使用多语言,也是每个组件都需要支持,这都是典型的可以通过 context 操作的例子使用示例我们实现一个多个组件,共享同一个颜色的示例,通过按钮点击切换颜色...你中有我我中有你 context.Provider = { $$typeof: REACT_PROVIDER, _context: context } context.Consumer..._currentValue } ...}我们自己实现的效果如下:图片本节也是代码为主,但是中间穿插文字的描述,我相信大家可以理解 context 的机制和产生的原因。...下一下小节我们学习下 react 中的高阶组件。

    2.4K30

    React中的Redux

    Action相当于事件模型中的事件,它描述发生了什么。Reducer相当于事件模型中的监听器,它接收一个旧的状态和一个action,从而处理state的更新逻辑,返回一个新的状态,存储到Store中。...设计State结构 在 Redux 应用中,所有的 state 都被保存在一个单一对象中。在写代码之前我们首先要想清楚这个对象的结构,要用最简单的形式把应用中的state用对象描述出来。...下面我们将用React来开发一个Hello World的简单应用。 安装React Redux Redux默认并不包含 React 绑定库,需要单独安装。...npm install --save react-redux 容器组件和展示组件 Redux 的 React 绑定库是基于 容器组件和展示组件相分离 的开发思想。...如果只是这样,那么我们肯定不能放心大胆的使用redux在我们的项目中,因为我们实际项目中,更多的都是异步事件。

    4K20

    我的项目延期了。。。

    我负责的项目延期了,我记录了项目中的一些时间点,算是对我负责的两个项目的复盘总结吧。...项目A:涉及到了硬件、软件、结构,外观设计(外包给设计公司) 1、需求变更,硬件方案改变,修改PCB布局用了3天; 2、等待产品经理确认外观设计,前后用了20天左右,这期间更换了3个产品经理; ——资料没有形成书面文件...5、人员流动,结构、硬件离职,这两个关键岗位空缺; ——这里可能是由于每个人的设计思路不同,新来的结构人员对部分结构进行了重新设计。...项目B:只涉及到了结构和外观设计(外包给设计公司) 1、产品经理更换,等待确认外观设计,大概用了3天时间; 2、手板回来后,发现太大,外观设计需要重新做; ——外观设计有圆弧,导致机芯需要抬高,导致整个整机尺寸太大...,另外,发手板之前没有评审; 3、机芯只给了3D的轮廓图,细节部分看不到,导致外观设计有的地方不合理; ——应该要给到设计公司完整的3D图或者实物图。

    36510

    我的新项目来啦!

    大家好,我是鱼皮,封面是本人。咳咳 此前我在星球里已经全程直播带大家完成了 2 个项目,并且给大家分享了简历的写法。...但是在企业中开发,我们经常需要跨团队合作,可能需要其他团队提供接口给我们来调用,从而可以复用其他系统现有的能力。...前端:Ant Design Pro(最新版本)+ React 18 + Ant Design 组件库 + Umi 框架 后端:Java + MySQL + MyBatis-Plus + SpringBoot...给大家免费试看第一期完整版,觉得有收获的朋友,可以跟着我做完后续项目~ 指路:https://www.aliyundrive.com/s/aVM4LrYQAGa,提取码: lu32 做项目的过程中,我也全程帮大家记录了笔记...---- 最后声明,这个项目是我在自己星球里带大家做的完整项目,如果大家想要学习的话,欢迎加入我的 编程知识星球 —— 一个帮助你学编程、少走弯路、手把手带你做项目的编程学习圈子。

    84450

    react壁纸网站项目开发中的一些思路总结

    此篇 用来记录一个壁纸小应用网站中的某些功能模块开发思路. 如果能够帮助到您, 非常荣幸. 同时也为了方便自己梳理一下某个功能实现的思路. 方便自己日后学习....分析 点击头像之后,调用react-router-dom 提供useNavigate钩子 进行路由跳转到个人中心页面, 跳转的时候我们需要将该用户(也就是该作品的发布者的id)带过去,那我们就可以在个人中心页面拿到这个...钩子 进行路由跳转 壁纸信息都保存在picDetail中, 也包含了该壁纸的发布人的id(author),这个id就是我们需要的....当前壁纸的作者的信息保存image_creator中....我这里是通过条件渲染dom 来做的. 如果从动态路由获取的id(图片的作者id) == 本地存储的user_id, 那么就说明当前中心页正好是当前用户的中心页,那么就进行展示 反之亦然.

    9610

    React基础(7)-React中的事件处理

    前言 React中的事件处理.jpg props与state都是用于组件存储数据的一js对象,前者是对外暴露数据接口,后者是对内组件的状态,它们决定了UI界面显示形态,而若想要用户与界面有些交互动作..."); }) 而在React中事件处理和内联方式相似,但是却有些不同 如何确保函数可以访问组件的属性?...那么本篇就是你想要知道的 React中的事件 在React中事件的绑定是直接写在JSX元素上的,不需要通过addEventListener事件委托的方式进行监听 写法上: 在JSX元素上添加事件,通过...,如下图所示 image.png 当给DOM元素绑定了事件处理函数的时候,该函数会自动的传入一个event对象,这个对象和普通的浏览器的对象记录了当前事件的属性和方法 在React中,event对象并不是浏览器提供的...在React中借用了一个loadsh.throttle的库实现函数的节流 首先你要在命令行终端下通过npm或者cnpm安装这个库 cnpm i -S lodash.throttle 然后在你编写的React

    8.4K41

    React学习(七)-React中的事件处理

    "); }) 而在React中事件处理和内联方式相似,但是却有些不同 如何确保函数可以访问组件的属性?...那么本篇就是你想要知道的 React中的事件 在React中事件的绑定是直接写在JSX元素上的,不需要通过addEventListener事件委托的方式进行监听 写法上: 在JSX元素上添加事件,通过...当给DOM元素绑定了事件处理函数的时候,该函数会自动的传入一个event对象,这个对象和普通的浏览器的对象记录了当前事件的属性和方法 在React中,event对象并不是浏览器提供的,你可以将它理解为React...在React中借用了一个loadsh.throttle的库实现函数的节流 首先你要在命令行终端下通过npm或者cnpm安装这个库 cnpm i -S lodash.throttle 然后在你编写的React...在实际的开发中,函数的节流与函数防抖也是用得比较频繁的,可见它的重要性不言而喻 如果您喜欢,觉得文章对你有所启发 谢谢与人分享或者文末下方留言,给川川在看一下,让我知道你曾今来过~ (问今日是几何)

    7.4K40

    我的React服务端渲染实践

    为了更好的方便大家理解整个实现的过程,这里我并不使用脚手架来实现 SSR 过程。...renderToString React 的虚拟 Dom 是 Dom 在内存中的一种存在形式,这就为 React 在服务器环境上运行提供了可能。...如果检测到 data-react-checksum 值不一致,React 会舍弃服务端提供的 Dom 结构,然后重新渲染组件并将其挂载到页面中,这种情况下将不再拥有服务端渲染带来的性能优势。...renderRouters 方法生成对应的组件,通过 react-dom/server 提供的 renderToString 方法将组件渲染成字符串,最后嵌入 html 片段中返回。...简单翻译下:这个属性就是为预渲染提供的(比如SSR),配合 mini-css-extract-plugin 插件一起使用,它不嵌入CSS,只导出标识符映射。 我们的服务端渲染的样式方案就依赖次选项。

    2.1K20

    React项目实现导出PDF的功能

    在做web项目中,有时候会遇到pdf导出的需求,现根据之前在公司的React项目中遇到的导出PDF需求,整理一个demo出来。...组件中使用导出方法 在Article组件中使用导出功能 3.1、Article.jsx组件的代码: import React, { Component } from 'react'; import {...前不久,在上海的抗疫保卫战中,突发疾病去世的志愿者孟庆功,就是中国商飞的型号副总设计师,同时也是中国商飞复合材料中心副主任。...虽然2017年到2018年间,C919的试飞工作进行不多。但从2018年年中开始,C919整体的取证试飞工作已经加快,并开始展开密集的飞行测试。...前不久,在上海的抗疫保卫战中,突发疾病去世的志愿者孟庆功,就是中国商飞的型号副总设计师,同时也是中国商飞复合材料中心副主任。

    2.3K10

    react源码中的hooks

    在开始讲解之前,我先声明我不是 React 的开发者或者维护者,所以我的理解可能也并不是完全正确。...我确实非常深入地研究过了 React 的 hook 系统的实现,但是无论如何我仍无法保证这就是 React 实际的工作方式。...话虽如此,我还是会用 React 源代码中的证据和引用来支持我的文章,使我的论点尽可能坚实。...一个 hook 会有数个属性,在继续学习之前,我希望你能牢记于心:它的初始状态会在初次渲染的时候被创建。它的状态可以在运行时更新。React 可以在后续渲染中记住 hook 的状态。...注意,我使用了“绘制”而不是“渲染”。它们是不同的,在最近的 React 会议中,我看到很多发言者错误的使用了这两个词!

    1.2K20

    浅谈react 中的 this 指向

    前言 最近在做一个项目的时候 关于class方法中 this 指向以及 外置prototype 的 this 指向 引发了我的思考! ?...image.png ES6原生class 我们假设 A 为 react B 为 我们创建的类 class B extends React.component{} class A...image.png 经过打印我们发现 B 中的 this 指向的都是 B 这个类 那么问题来了,我们 都知道 react的 class 中需要绑定 this, 为什么需要?...// 如果我们将 constructor 中的那个 bind 去掉之后 // this.getme = this.getme.bind(this) // 执行到这里 this的指向就变化了...ES6class 注意点 译文 为什么需要在 React 类组件中为事件处理程序绑定 this 未解之谜 原生 class 中 如果方法改为箭头函数这种形式就会报错 但是在 react 的 class

    2K10
    领券