React way to explore https:https://cdn.v2ex.com/navatar/b0b1/83c2/837_normal.png?m=1650095159 https:https://cdn.v2ex.com/navatar/b0b1/83c2/837_large.png?m=1650095159 2025-09-25T08:05:01Z Copyright © 2010-2018, V2EX 折腾了好几天总算在 windows 系统本地打包 expo 项目出 apk 了,分享下经验 tag:www.v2ex.com,2025-09-15:/t/1159286 2025-09-15T04:19:28Z 2025-09-25T08:05:01Z HMYang33 member/HMYang33 创建项目和写代码就不说了,主要说一下大部分视频教程未提及的打包部分

主流都是在推荐 eas 云打包,不仅排队时间长,还总是排了老长的队又很容易出错,有时甚至是云打包所用的机器网络差点意思导致依赖安装失败了。就断掉整个打包流程。然后你就需要重新排队打包。不出意外又要排队两个小时。有点离谱。

eas 也支持--local 参数进行本地打包,但是本地打包还要登录 eas 账号,没一点代码安全感。很离谱。

不仅没安全感,就算你登上了,也会提示你 windows 不支持。离离原上谱。

如果使用 windows subsystem for linux 又会大概率牵扯出不会正确使用 WSL 的各种疑惑。而且 expo 文档上也不会告诉你怎么通过 wsl 打包,因为 expo 团队就没想着兼容 windows 平台,也不会给你测试 wsl 能不能正常用于打包。

有没有安全且方便的 windows 系统的打包 expo 项目的 apk 的方式呢,有的兄弟有的

1.下载并安装 Android Studio

https://r3---sn-i3b7knlk.gvt1.com/edgedl/android/studio/install/2025.1.3.7/android-studio-2025.1.3.7-windows.exe

打开 exe 文件,跟着安装向导下一步下一步...

2.Android Studio 初次运行需要下载的东西

打开安装好的 Android Studio ,

点击不给谷歌发送使用数据,

提示需要下载 SDK 和安卓模拟器,下一步到 License 界面,会展示 android-sdk 的许可内容,点下面接受的单选按钮

点击左侧 android-sdk-preview-license 查看第二个许可内容,再点下面的接受单选按钮

SDK 和安卓模拟器的下载需要消耗 50 分钟(我的网速是 1.7MB/s)

时间宝贵,你可以先干点别的。

下载好了就重启一次电脑

感觉内存不够用的可以打开虚拟内存(推荐勾选“自动管理所有驱动器的分页文件大小”)。

3.在你的项目目录安装 node modules 并进行预构建

使用 npm ci 强制使用 package-lock.json 的依赖清单安装依赖

使用 npx expo prebuild 构建出 android 工程目录

4.使用 Android Studio 打开构建出的 android 工程目录

打开之后自动执行更新索引和下载项目的依赖包,这一步耗时70 分钟(我用的 4 核 CPU ,网速是 1.7MB/s)

再次提醒,时间宝贵,你可以先干点别的。

5.1 打包出调试基座

点击左上角三个横线,鼠标放到 Build ,再放到二级菜单的 Generate App Bundles or APKs,点击 Generate APKs

这一步同样耗时巨大,需要60 分钟

5.2 打包出生产 APK

点击左上角三个横线,鼠标放到 Build ,点击 Generate Signed App Bundle or APK

选择 APK 单选框,下一步要求你使用签名,有的话就选创建好的,没有的话就创建新的

再下一步,在 debug 和 release 之间选择 release ,点蓝色的 create 按钮。大部分依赖都在制作调试基座时缓存过了,所以这次打包大概五分钟后就生成好了

5.2.1 创建新签名文件

找个存放秘密的好地方,新建文本文件,并改名成后缀为 jks 的文件如 xxx 的签名.jks

在 Android Studio 里面点 create new..., 第一个输入框是填你刚刚创建的 jks 文件路径,可以点击输入框右侧的文件夹图标选取你的 jks 文件。

Validity Years 是签名有效时长多少年,如果过了这个时间需要重新制作签名。因签名文件变化也会导致老版本无法升级成新版本。只能卸载重装为新版。

剩下的输入框如果没什么特别的安全性要求,无脑都写一样的就能用。如果有应用安全的要求就好好写。

注意事项

引入新的原生模块时需要重新制作调试基座,因为旧的调试基座不包含这部分新的原生代码。

要用的系统权限需要在 app.json 里面提前列出来,并打入调试基座,否则代码里直接请求获取权限会得到 never ask again(拒绝且不再询问)

顺带吐槽一下 Android studio 是真的很占磁盘,搞完这一套流程就占用我 25GB ,就算安装到别的盘,也会吃掉 C 盘大约 10GB 的空间

]]> 一个 RN 小游戏代码修改的活 tag:www.v2ex.com,2025-09-12:/t/1158831 2025-09-12T08:33:13Z 2025-09-02T10:32:13Z 96 member/96 有比较完整的逻辑代码,小游戏。

需要的工作内容

不涉及主要功能修改,小游戏修改样式,添加接口。大概三个页面,5-6 个接口

预算相关

预算 500-600 ,预估工时 1 天。

联系信息

可以联系我获取具体信息,今明两天完成,周末要给到。

t.me/hoytzhang

小龙号 Base64.encode(000000)

]]>
为什么 React-Native 总是昨天还能编译,今天就报错了 tag:www.v2ex.com,2025-09-12:/t/1158741 2025-09-12T03:06:38Z 2025-09-12T11:49:59Z ifbluethen member/ifbluethen 使用的 expo ,总是昨天还能编译或运行,第二天来就有错误,要么是依赖的问题。但问题是期间只改了代码,没有添加任何包之类的东西,莫名其妙就出错。

]]>
React 19 下有什么方便点的组件? Arco Design 用起来还是有些问题 tag:www.v2ex.com,2025-09-11:/t/1158641 2025-09-11T12:32:33Z 2025-09-16T14:27:15Z Martin123123 member/Martin123123 时隔多年再次用 react,请问 ahooks 的 useMemoizedFn 和 react 内置的 useEffectEvent 有什么异同? tag:www.v2ex.com,2025-09-08:/t/1157819 2025-09-08T08:34:28Z 2025-09-08T19:03:19Z june4 member/june4 重新快速扫了一遍 react 的文档,发现文档里多了一个useEffectEvent的函数,在入门文档里还多次提到。 源码如下 https://github.com/sanity-io/use-effect-event/blob/main/src/useEffectEvent.ts

这个貌似是 ahooks 的 useMemoizedFn 全方位弱化版。

因为 useEffectEvent 文档里严格要求:

就是说这个使用范围限得很死干不了 useCallback 的活,而 useMemoizedFn 可以完全替代 useCallback 和 useEffectEvent 。

看了眼二者的源码,主要区别是 useEffectEvent 只有在 render 后才有值,所以不能马上用,这和 useCallback 不同。

那问题来了,为什么 react 要出这个垃圾版 useEffectEvent/useCallback 而不是 ahooks 的终级版呢?应该是有我想不到的理由,或者我的理解有什么不对的地方?

]]>
来个专业写 移动 web 前端的, React tag:www.v2ex.com,2025-08-04:/t/1149929 2025-08-04T17:03:10Z 2025-08-05T10:32:16Z tangknox1 member/tangknox1 谁有闲工夫, React,帮忙定位并处理下 BUG tag:www.v2ex.com,2025-08-01:/t/1149374 2025-08-01T12:13:52Z 2025-07-22T12:12:52Z tangknox1 member/tangknox1
有闲工夫的,我付费,帮我解决下。

可直接联系我:bmlrZXNyQHllYWgubmV0
Base64 解码下 ]]>
react antd 就是包了巧克力的屎 tag:www.v2ex.com,2025-07-22:/t/1146763 2025-07-22T01:08:18Z 2025-08-04T07:05:52Z yuhuij member/yuhuij (首先叠甲,antd 在大部分情况下是很好用的。)最近新项目从 vue 转到 react,all in antd 全家桶,发现很多在 vue 生态 里基础的功能,在 react 生态里就是没有很好的解决方案。比如 antd 表格滚动高度自适应,表格列可拖动。在翻阅 issues 时产生了下图一样的疑惑。所有请教各位大佬对于 antd 表格高度自适应有没有完美的解决方案。顺便贴上 github issues 链接 image

]]>
提问一个 React 的问题 tag:www.v2ex.com,2025-07-09:/t/1144118 2025-07-09T15:15:21Z 2025-07-10T15:11:25Z Plumbiu member/Plumbiu 像是 fetch 这种请求,需要根据某个 state 变化重新请求,例如 pageSize ,大家一般用以下哪种写法(或者自己有更好的也可说一下):

useEffect:

useEffect(() => { fetch(`xxx?pageSize=${pageSize}`) }, [pageSize]) 

在 state 发生变化的组件调用 fetch:

<Pagination pageSize={pageSize} OnChange={(pageSize) => { fetch(`xxx?pageSize=${pageSize}`) }} /> 

我个人更倾向第二种,第一种 useEffect 看上去更方便,不用第二种需要在每个 state 变化的组件调用 fetch ,但是长期维护下来可能会有意想不到的 bug (公司里有个项目因为缓存的 code 和后端返回的 code 不同,导致 useEffect 调用了两边,自己 dev 环境下 mock 很难察觉)

]]>
React 多人开发怎么确保性能,有没有最佳实践 tag:www.v2ex.com,2025-07-08:/t/1143888 2025-07-08T23:20:26Z 2025-07-09T17:11:58Z Chuckle member/Chuckle 像 data-grid 的案例都推荐用上下文去传数据了,避免小变化导致整个表格列重渲,但是在业务里用上下文多了,感觉更难维护数据流。

reference
]]>
zustand create 出来的 useStore,需不需要 destory? tag:www.v2ex.com,2025-07-08:/t/1143822 2025-07-08T10:16:00Z 2025-07-08T12:22:25Z realJamespond member/realJamespond 关于 React: tag:www.v2ex.com,2025-07-08:/t/1143793 2025-07-08T08:49:00Z 2025-07-08T19:35:25Z Rust2015 member/Rust2015 人生就像滚雪球,最重要之事是发现湿湿的雪和长长的坡。 ---沃伦*巴菲特

那我的疑问来了,前端技术集大成者 React 是否属于湿湿的雪和长长的坡。

我们应该怎么的辩证的、长远的、历史的看待 React 和更好的学习 React 。

]]>
Metis UI:下一代 React 组件库,重新定义前端开发体验 tag:www.v2ex.com,2025-07-08:/t/1143726 2025-07-08T05:50:09Z 2025-07-08T20:02:52Z Minimx member/Minimx Metis UI:下一代 React 组件库,重新定义前端开发体验

在快速发展的前端生态中,开发者们一直在寻找既能提高开发效率,又能保证代码质量和用户体验的解决方案。今天,我们很兴奋地向大家介绍 Metis UI —— 一个基于 Tailwind CSS 构建,继承 Ant Design 交互逻辑的现代 React 组件库。

为什么选择 Metis UI ?

在众多组件库中,Metis UI 独树一帜,它不是简单的重复造轮子,而是在继承优秀设计理念的基础上,带来了全新的开发体验:

继承经典,超越传统

Metis UI 基于 Ant Design 久经考验的组件逻辑构建,确保了交互模式的一致性和可靠性。同时,我们抛弃了传统的 CSS-in-JS 方案,全面拥抱 Tailwind CSS ,为开发者带来了前所未有的样式自由度。

极致的开发体验

import { Button, Input, Form } from 'metis-ui'; // 简洁的 API ,强大的功能 <Button type="primary" className="hover:scale-105 transition-transform" > 自定义样式,轻而易举 </Button> 

无需学习复杂的主题配置,直接使用 Tailwind 类名即可实现个性化定制。

技术亮点

1. 完美的 TypeScript 支持

interface ButtonProps { type?: 'primary' | 'default' | 'dashed'; size?: 'small' | 'middle' | 'large'; loading?: boolean; ... } 

每个组件都提供完整的类型定义,让你的开发过程更加安全和高效。

2. Tailwind CSS 深度集成

<Button className="bg-gradient-to-r from-blue-500 to-purple-600 hover:from-blue-600 hover:to-purple-700"> 渐变按钮 </Button> 

利用 Tailwind 的强大功能,轻松实现复杂的样式效果。

3. 文档驱动开发

快速开始

安装

# npm npm install metis-ui # pnpm (推荐) pnpm add metis-ui # yarn yarn add metis-ui 

配置

向你的入口 CSS 文件添加一个 @plugin 以导入 Metis UI 。

@import 'tailwindcss'; @source './node_modules/metis-ui/es'; @plugin 'metis-ui/plugin'; 

开始使用

import { Alert } from 'metis-ui'; const App = () => ( <div className="h-screen w-screen"> <Alert type="info" banner message="Hello" description="Welcome to metis-ui" /> </div> ); export default App; 

主题定制

Metis UI 只针对颜色进行主题定制,默认提供了两套主题:lightdark。您还可以创建自己的自定义主题或修改内置主题。

您可以在 CSS 文件中的 @plugin "metis-ui/plugin" 后添加括号来管理主题,详细介绍

Metis Plus - 企业中后台系统模板

我们提供了一套开箱即用的企业中后台系统模板,基于 Reactreact-routerTypeScriptViteTailwindCSSZustandfaker-jsMSW 等技术栈构建。它内置了开箱即用的数据流、国际化、菜单、模拟数据、权限管理、主题切换等功能,助力企业快速搭建高质量的中后台应用。

├── .husky # Husky 钩子配置目录 ├── public # 公共静态资源目录 ├── src # 源码目录 │ ├── apis # 服务端接口请求相关 │ ├── assets # 静态资源(图片、SVG 等) │ ├── components # 通用组件 │ ├── hooks # 自定义 hooks │ ├── layouts # 页面布局组件 │ ├── locale # 国际化资源 │ ├── mocks # Mock 数据与服务 │ ├── pages # 页面组件 │ ├── store # Zustand 状态管理 │ ├── types # TypeScript 类型定义 │ ├── utils # 工具函数与工具类 │ ├── loading.tsx # 全局 Loading 组件 │ ├── main.tsx # 应用入口文件 │ ├── routes.tsx # 路由和菜单配置 │ └── vite-env.d.ts # Vite 环境类型声明 ├── .env # 环境变量配置文件 ├── .lintstagedrc # lint-staged 配置文件 ├── .prettierignore # Prettier 忽略文件配置 ├── .prettierrc # Prettier 代码格式化配置 ├── commitlint.config.js # 提交规范校验配置 ├── eslint.config.js # ESLint 代码规范配置 ├── index.html # 项目入口 HTML ├── package.json # 项目依赖与脚本配置 ├── tailwind.css # TailwindCSS 全局样式入口 ├── tsconfig.app.json # TS 应用配置 ├── tsconfig.json # TS 根配置 ├── tsconfig.node.json # TS Node 配 

官方资源

tips: 网站匀部属在 Github Pages, 访问可能需要梯子

]]>
React 组件库 Gluestack 出现多个恶意软件包 tag:www.v2ex.com,2025-06-10:/t/1137724 2025-06-10T12:19:39Z 2025-06-10T14:19:39Z cmos member/cmos 用于托管 React 和 React Native 组件库的 Gluestack 日前出现多个恶意软件包,这些恶意软件包被感染远程访问木马 (RAT),这些软件包会执行恶意 Python 和 pip 命令以实现更多目的。

Gluestack 上至少有 17 个已经被感染的软件包,这些软件包的周下载量高达 100 万次,即,典型的供应链攻击。

消息来源: https://www.landiannews.com/archives/109286.html https://www.aikido.dev/blog/supply-chain-attack-on-react-native-aria-ecosystem

]]>
gpt 给我搞懵了,是我对 Suspense 理解有误吗? tag:www.v2ex.com,2025-06-08:/t/1137197 2025-06-08T08:40:11Z 2025-06-09T09:41:57Z xiaoming1992 member/xiaoming1992 我在考虑博客首页优化的时候,灵机一动想要先响应前 10 条博客,然后流式响应剩下的。就问了一下 gpt 。除了第一问以外,后续都是在跟 gpt 争论。。。

与 gpt 的聊天

我认为在博文只有 100 条左右的时候,/api/posts

应该没有明显差距(尤其是 posts 接口还不获取内容,只获取标题、简介、发布日期之类的东西)

我假设都需要 200ms.

那么按 gpt 的意思来干的话,页面会是

|-- 白屏
|--|-- 200ms 后接口获取到数据,渲染 html 输出到前端
|--|-- 同时 Suspense 显示 fallback
|--|-- 同时请求第二个 get 接口,
|--|--|-- 再 200ms 后接口获取到数据,渲染 html 输出到前端

按我的意思的话,页面会是

|-- Suspense 立即显示 fallback
|-- 同时请求 get 接口,
|--|-- 200ms 后接口获取到数据,渲染 html 输出到前端

这不是明显我的方案更优吗,省了 200ms 的白屏。可 gpt 非说它的更好。

大佬们帮我看看,是不是我理解得不到位。

'use server' async function Posts({ start, count }: { start: number; count?: number }) { const data = await get('/api/posts', { start, // 假设 count 为空的时候获取后续所有 count, }) return <RenderPosts data={data} /> } // gpt 的意思是这样 export function Page() { return <> <Posts start={0} count={10} /> <Suspense fallback={<div>loading</div>}> <Posts start={10} /> </Suspense> </> } // 我的意思是这样 export function Page() { return <> <Suspense fallback={<div>loading</div>}> <Posts start={0} /> </Suspense> </> } 
]]>
有用 LiveKit 开发过视频语音会议系统的嘛 tag:www.v2ex.com,2025-06-01:/t/1135748 2025-06-01T12:49:31Z 2025-06-01T14:43:10Z tangknox1 member/tangknox1 https://docs.livekit.io/home/
遇到点技术问题,想付费找人解决或者二开下。
有用过 livekit 的 回复下,可直接联系我:bmlrZXNyQHllYWgubmV0 ]]>
RN 怎么构建输出 Java 的原生工程啊? tag:www.v2ex.com,2025-05-30:/t/1135356 2025-05-30T02:21:09Z 2025-05-30T03:06:31Z cs3230524 member/cs3230524 我是用 @react-native-community/cli 创建的。但原生部分安卓出来是 KT 代码,要集成一些原生 SDK..一些配置都不一样了。能转成 Java 代码吗?或者创建模板的时候有没有配置像制定 KT 还是 Java 。

]]>
大佬们,有没有好用的 react.js 画布组件? tag:www.v2ex.com,2025-05-11:/t/1131021 2025-05-11T11:49:52Z 2025-05-11T16:48:52Z deity888 member/deity888 技术文章翻译: React 协调机制 tag:www.v2ex.com,2025-04-25:/t/1128109 2025-04-25T13:34:17Z 2025-04-25T22:51:15Z sugarkeek member/sugarkeek
[React 协调机制:组件背后的隐形引擎]( https://halo.chenkeyan.com/archives/fe-weekly-9-react-keys)

给我印象比较深刻的点,一个是 react 组件重新渲染的规则,一个是 key 值影响组件状态,然后就是最后通过 react 协调机制给的实践建议。

想看英文原文可以去这👉: https://cekrem.github.io/posts/react-reconciliation-deep-dive/

我这边跟着文章也做了几个小 demo ,可以体验体验:

组件渲染规则演示

https://codepen.io/showmecode_ahh/pen/LEEyEdP

通过 key 值状态保持演示

https://codepen.io/showmecode_ahh/pen/azzWdro

通过 key 值状态转换演示

https://codepen.io/showmecode_ahh/pen/qEEmbGd ]]>
不知道是 react 不行还是阿里不行, 或者是我电脑不行? 访问阿里云卡卡的.滚动一愣一愣的. tag:www.v2ex.com,2025-04-23:/t/1127586 2025-04-23T09:21:27Z 2025-04-23T09:21:27Z luckyc member/luckyc https://boce.aliyun.com/detect/http ]]> 不敢相信在 2025,怎么自己 build/bundle + self-host 一个 ESM 版本的 react.js 和 react-dom.js 也是一个找不到官方答案的问题。问了 AI,答案也不靠谱 tag:www.v2ex.com,2025-04-14:/t/1125351 2025-04-14T07:32:35Z 2025-04-14T11:40:52Z Radeon member/Radeon https://esm.sh/react@18.2.0
https://esm.sh/react-dom@18.2.0/client
这些 CDN 。问题是不用 CDN 的话,自己怎么去把完整的 ESM build 出来呢?问了 AI 也找不到具体的官方步骤 ]]>
有没有熟悉 react native 的老哥,求帮忙看个问题 tag:www.v2ex.com,2025-04-13:/t/1125174 2025-04-13T14:56:32Z 2025-04-26T09:18:17Z smileme member/smileme 背景是使用 react native + storekit2 (桥接) 开发 APP ,接入苹果订阅。遇到一个奇怪的问题是: 使用沙箱账号测试支付的时候,调用product.purchase(productId)会返回购买成功 success ,但Transaction.currentEntitlements 又取不到生效的订单,我以为是有没过期还在续订的订单。

但用Transaction.all查到所有订单之后发现所有订单都是过期的。完全没头脑,官方文档也翻了几遍,AI 也问了各种,就是不知道为啥。

求个老哥帮忙解决下,可付费。

另外之所以用桥接没有直接用 react-native-iap ,是因为上周遇到一个蜜汁问题,死活查不到在 apple store connect 配置的 sku ,后面按照 github 其他人的教程用了桥接调用就 OK 了。

这是 purchase 的代码:

func purchaseProduct(_ productId: NSString, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) { Task { do { let products = try await Product.products(for: [productId as String]) guard let product = products.first else { reject("no_product", "未找到对应产品", nil) return } let result = try await product.purchase() print("[StoreKit2Module] 购买结果: \(result)") switch result { case .success(_): print("[StoreKit2Module] 购买成功") resolve("购买成功") case .userCancelled: print("[StoreKit2Module] 用户取消了购买") reject("cancelled", "用户取消了购买", nil) case .pending: print("[StoreKit2Module] 购买处于等待状态") reject("pending", "购买处于等待状态", nil) @unknown default: print("[StoreKit2Module] 未知的购买结果") reject("unknown", "未知的购买结果", nil) } } catch { print("[StoreKit2Module] 购买时发生错误: \(error)") reject("purchase_error", "购买时发生错误: \(error)", error) } } } 
]]>
React 写的越多,就越想直接操作 DOM tag:www.v2ex.com,2025-04-08:/t/1123994 2025-04-08T08:27:20Z 2025-04-21T15:37:27Z aikilan member/aikilan 越写越烦躁,要兼顾性能,要兼顾语法,还要考虑优雅。。。很多小场景明明知道直接操作 dom 来的又快又准,又不敢瞎搞。

]]>
react native 有类似 antd/x 的 ai 对话组件库吗 tag:www.v2ex.com,2025-04-06:/t/1123537 2025-04-06T08:09:58Z 2025-04-06T09:08:58Z shuffblow member/shuffblow 如题,最好能带有语音相关对话功能的,现在有现成的组件库吗

]]>
react 最佳技术栈是什么? tag:www.v2ex.com,2025-03-26:/t/1121091 2025-03-26T01:37:52Z 2025-04-20T11:28:10Z southsala member/southsala 中后台目前考虑 antd pro + umi 的全家桶
其他的考虑 nextjs
请问这个可以吗? ]]>
是不是都用 expo-image 了,分享下 react-native-turbo-image tag:www.v2ex.com,2025-03-20:/t/1119917 2025-03-20T09:03:22Z 2025-03-20T09:03:22Z duguyihou member/duguyihou 大家好,想跟大家分享下 react-native-turbo-image.

为什么需要它?

在 React Native 开发中,图片加载和渲染性能一直是一个常见的痛点,尤其是在处理大量图片或需要高性能的场景时。react-native-fast-image 大概快三年没有维护了。react-native-turbo-image 就是为了解决这个问题而诞生的。

主要特性:

极速加载:原生优化,图片加载速度大幅提升。

内存优化:智能缓存和内存管理,减少 OOM (内存溢出)风险。

高度可定制:支持自定义加载策略、缓存控制和图片处理。

项目地址

https://github.com/duguyihou/react-native-turbo-image

]]>
用 AI 写了个 react 的资讯网站,才发现 SEO 很差,怎么办 tag:www.v2ex.com,2025-03-15:/t/1118721 2025-03-15T14:30:54Z 2025-03-16T09:38:47Z limklimk99 member/limklimk99 新手。

第一次用 react ,就用 AI 做了,发现 SEO 不好,搜索引擎不好收录,但是都做完了。。现在该 咋办哦。。

网站 https://www.bahew.com/

]]>
反思,我写的前端的 react 味是不是太重了 tag:www.v2ex.com,2025-03-14:/t/1118463 2025-03-14T07:48:52Z 2025-03-15T12:36:57Z zhengfan2016 member/zhengfan2016 看 java 味有感

假如前端有如下页面组件 a 和 b ,a 和 b 中有一部分并集的功能,比如 card 的边框,标题什么的

我一般会拆成 BaseCard ,ACard ,BCard 三个组件来写,包括 ts 也是,interface BaseCardProps ,然后被另外两个组件继承。我自认为写到还算优雅,组件分拆出来每个文件代码量一般控制在 100 行内,顶多 300 行出一点。

行数超 300 的话,后续有时间整理代码我一般会按不同功能细化继续拆分出组件。看到有人说 javaer 写点简单功能就先写十几个文件然后到处继承,每个类代码很少,难道我一直以来坚持的写法是错误的吗,all-in-one 全堆一起才是正确写法?

]]>
小白求助,React 项目无法修改 tag:www.v2ex.com,2025-03-14:/t/1118460 2025-03-14T07:40:28Z 2025-03-15T13:28:37Z nedtang member/nedtang https://github.com/openspug

这个项目 docker 部署,修改.js 文件按,但是页面没有发生改变,清除缓存了,ai 也问过了。

]]>
被 antd 惯坏了,别的组件库用的很难受,大家有这种感觉吗? tag:www.v2ex.com,2025-02-25:/t/1114152 2025-02-25T09:23:14Z 2025-02-28T10:58:01Z asen001 member/asen001 我本人一直用 antd 开发,最近有点审美疲劳想找点新鲜玩意。 试了一圈英文社区推荐的组件库( shadcn mantine chakra 等),功能上都不如 antd 方便,不说太复杂的功能,异步关闭确认框这种常见的功能都得自己封装,不然就得哼哧哼哧写一大坨。 开发后台 dashboard 应用,除了 antd 还有别的更好的选择吗?

]]>
React 学习曲线要比 Vue 陡峭许多呀 tag:www.v2ex.com,2025-02-25:/t/1114150 2025-02-25T09:18:23Z 2025-03-20T00:05:15Z xiaohupro member/xiaohupro 先说一下自己的技术背景,后端程序员后来转为全栈,日常使用前端的 Vue 比较多,React 只上手过官网的教程 Demo ,目前想学习 React 技术栈这边的,一开始直接上手 Next.js 倒是也能做出东西,但是还是想系统的学习一下,好多概念都不清楚,例如各种 Hook ,以及它们正确的使用场景,有没有前端大佬给一点 React 学习路线,感谢🙏

]]>
请教一个关于 useEffect 依赖的问题 tag:www.v2ex.com,2025-02-20:/t/1113084 2025-02-20T14:28:59Z 2025-02-24T00:24:43Z ooo4 member/ooo4 请教一个关于 useEffect 依赖的问题

最近在学习 react 和 nextjs ,算初学者,感觉我写的很多 useEffect eslint 都提示缺少依赖,但其实我觉得写的依赖已经够了

比如这样

 const [conversation, setConversation] = useState<Conversation[]>([]) useEffect(() => { if (currentChatTitle) { setConversation( conversation.map((i) => { return { ...i, title: i.id === currentChatId ? currentChatTitle : i.title, } }) ) } }, [currentChatId, currentChatTitle]) 

eslint 就说缺少conversation这个依赖,但是加了之后就无限执行这个 useEffect 回调了,其实我连这个currentChatId都不想加入依赖

eslint 也给了解决方案就是改成setXXX((prev)=>xxx),但这样好麻烦啊,或者就是 disable 掉这一行

 useEffect(() => { if (currentChatTitle) { // 改成`setXXX((prev)=>xxx)` setConversation((conversation) => conversation.map((i) => { return { ...i, title: i.id === currentChatId ? currentChatTitle : i.title, } }) ) } }, [currentChatId, currentChatTitle]) 

请问下各位平时会关掉这个eslintreact-hooks/exhaustive-deps这个规则吗

]]>
请教一个 react native FlatList 的问题 tag:www.v2ex.com,2025-02-18:/t/1112454 2025-02-18T14:56:03Z 2025-02-18T17:54:03Z letterLim member/letterLim 想学一下 React,昨天看到一个内容很好的网站,但是看完之后没有续集了, v 友有好的教程吗? tag:www.v2ex.com,2025-02-12:/t/1110815 2025-02-12T00:46:45Z 2025-02-14T04:11:56Z skytenlc member/skytenlc React 组件样式的实现方式哪种更好? 大家都发表一下意见么 tag:www.v2ex.com,2025-01-22:/t/1107170 2025-01-22T12:20:37Z 2025-01-29T17:21:58Z huijiewei member/huijiewei function ToggleButtonRemastered({ isEnabled, children }) { return ( <button className={clsx( isEnabled && "scale-110", "transition-transform duration-200 w-max text-xl" )} > {children} </button> ) }

function ToggleButtonClassicEdition({ isEnabled, children }) { return ( <button data-enabled={isEnabled} className="data-[enabled=truel:scale-110 transition-transform duration-200 w-max text-xl" > {children} </button> ) } 
]]>
[招聘] React 全职远程开发岗位 tag:www.v2ex.com,2025-01-21:/t/1106719 2025-01-21T03:08:07Z 2025-01-21T03:08:07Z lispmind member/lispmind 公司介绍 MyShell 正在开创一个去中心化的 AI 消费者层。我们的愿景是为 AI 应用开发者提供一个一体化的解决方案,提供一个他们可以无缝构建、发布和变现其创作的平台。MyShell 得到了包括 Dragonfly Capital 和 BinanceLabs 在内的顶级风投公司的支持,在种子轮和 Pre-A 轮融资中共筹集了超过 1600 万美元。著名的天使投资人包括 Transformer 论文的共同作者 Illia Polosukhin 。

在 MyShell ,我们坚决贯彻开源路线。我们的模型—OpenVoice (语音克隆)、MeloTTS (文本转语音)和 JetMOE (大型语言模型)在 Hugging Face 上已被下载超过 200 万次,在 Github 上获得了超过 33K 的星标。我们还开源了自研的 Agentic 框架 ShellAgent ,辅助开发者端到端构建自己的 Al 应用。我们的团队由来自麻省理工学院、普林斯顿大学和牛津大学等顶尖学府的才华横溢的人才组成,致力于在有冲劲和公开透明的工作环境中促进创新。

公司产品: https://app.myshell.ai/explore ,iOS App 在海外 App Store 搜索 myshell 即可体验

前端开发工程师 岗位职责:

  1. 负责公司 AI 产品前端的研发迭代,致力于提供卓越的用户体验。
  2. 与产品经理、设计师、后端工程师紧密协作,持续优化产品易用性、界面技术和网站性能。
  3. 前沿技术研究与新技术调研,为公司前端架构方案选型提供建议。

任职要求:

  1. 本科及以上学历,计算机或相关专业,2 年以上工作经验。
  2. 精通 HTML5 、CSS3 、ES6+、TypeScript 等前端技术。
  3. 熟悉面向对象编程、函数式编程及常见设计模式。
  4. 熟练使用 React 框架,深入理解其底层原理,必须有 React Native 项目开发经验。
  5. 熟悉 W3C 标准,掌握表现与数据分离、Web 语义化等概念。
  6. 热衷用户体验分析与优化,精通交互设计理论。
  7. 熟悉 Linux 环境,具备互联网开发经验,拥有 Github 或技术社区代码贡献加分。

加分项:

  1. 具备创业经历,有 AI 相关产品开发经验,对新兴技术有浓厚兴趣。
  2. 有 iOS 、Android 客户端研发经验或熟悉相关技术栈。

简历投递方式: eric@myshell.ai 或➕v MTU4MTEwNTMzMDg=

]]>
有什么好的工具可以将 Figma 设计图转换为 React JSX tag:www.v2ex.com,2025-01-17:/t/1105756 2025-01-17T02:27:10Z 2025-01-17T07:05:41Z wxy8866 member/wxy8866 Figma 没有 dev mode ,只有常规的权限。如果讲一张 Figma 设计图,转换成带 CSS 的 React page 。

要求不高,大体符合即可。

]]>
写的 React 组件有 bug,知道原因但不会解决,求教 tag:www.v2ex.com,2025-01-09:/t/1103933 2025-01-09T07:59:39Z 2025-01-09T10:39:03Z lisianthus member/lisianthus 完整代码: https://codesandbox.io/p/sandbox/d8kjg2

最近自娱自乐时,写了一个类似高中物理的木板-滑块组件,可以根据木板的角度来控制小球的位置,见图: https://imgur.com/a/Eo2briC

组件有个问题,在旋转到 90 度附近时,值会突然从 0 跳到 100: https://imgur.com/a/kWmm3I4

我知道问题出在 handleMouseMove 函数里,斜率 k 在 90 度附近发生了跳变,但不会解决,求教

]]>
React 不依赖第三方库怎么做到页面状态的缓存? tag:www.v2ex.com,2025-01-07:/t/1103338 2025-01-07T14:59:10Z 2025-01-08T13:27:59Z eod member/eod Vue 中有官方的 KeepAlive 组件,而 React 中我也尝试了几个第三方库如 react-activation ,效果不是很满意,特别是必须要降为 React17 版才能用。
如果要在离开页面时将状态缓存到 Zustand ,返回时再从 Zustand 中取出回显,如果页面用到的状态很多的话也非常繁琐,想问一下哥哥们有没有什么好的解决方案或者推荐用法。
谢谢哥哥们! ]]>
react 新手关于 react useEffect 的困惑,为什么 useEffect 里面的 cleanup 函数里面的 props 是旧的,如何从源码解释? tag:www.v2ex.com,2025-01-03:/t/1102355 2025-01-03T09:09:02Z 2025-01-05T09:22:41Z ooo4 member/ooo4 版本: react@18.3.1

我看源码就是先 UnmountEffects 后 MountEffects,里面也只是递归遍历而已,为什么 cleanup 里面的 props 是上一次的了?

commitPassiveUnmountEffects(root.current); commitPassiveMountEffects(root, root.current, lanes, transitions); 
// 复现的 demo function App() { const [num, setNum] = useState(100) window.__setNum = setNum return <Comp num={num}></Comp> } function Comp(props) { debugger useEffect(() => { debugger props // {num:1000} return () => { debugger // 为什么这里是旧的 props? {num:100} props } }, [props.num]) return ( <p> <span>{props.num}</span> </p> ) } setTimeout(() => { __setNum(1000) }, 1000) 
]]>
react 相对于 vue 优秀在那里! tag:www.v2ex.com,2024-12-31:/t/1101553 2024-12-31T06:07:17Z 2025-02-09T11:55:54Z Rust2015 member/Rust2015 为什么大家都对 react 很推崇

]]>
前端已凉? React19 正式发布了一段时间,站内几乎没有热度 tag:www.v2ex.com,2024-12-25:/t/1100263 2024-12-25T09:59:51Z 2024-12-26T22:46:40Z TWorldIsNButThis member/TWorldIsNButThis 记得以前有个争论,React 要不要每个函数都加 useCallback ,每个变量都加 useMemo ,所以 React19 的官方回答是:要加,但是由编译器自动加?

另外 autoBatching 对大型项目的性能增益不知道能有多少,比如飞书这种典型大型 React 卡逼 app 如果升到 19 会不会流畅点

]]>
学 React Native app 开发的话。看什么书或资料? 查了一下又是 React 又是 React Native 又是 expo 的,眼花了。如果要开发一个 V2EX 的客户端或头条那样的 app,直接下手干。看什么资料?谢谢 tag:www.v2ex.com,2024-12-15:/t/1097723 2024-12-15T14:15:38Z 2024-12-16T07:00:19Z python30 member/python30 各位大佬和巨佬们 react 的 umi.js 前端项目迁移 vite 成本高不高 ? tag:www.v2ex.com,2024-12-11:/t/1096653 2024-12-11T03:19:53Z 2024-12-11T05:19:53Z ixixi member/ixixi tsx 的老项目代码两三万行 ; 整体运行稳定 就是速度稍慢点 , 还有一些设计问题不太灵活 想整体迁移到 vite 顺便改下结构

]]>
用 npx create-react-app myapp 命令创建 react 项目提示: tag:www.v2ex.com,2024-12-08:/t/1095902 2024-12-08T08:46:37Z 2024-12-11T18:16:31Z Rust2015 member/Rust2015 用 npx 命令创建 react 项目,提示 npm error code ERESOLVE npm error ERESOLVE unable to resolve dependency tree npm error npm error While resolving: jxs1@0.1.0 npm error Found: react@19.0.0 npm error node_modules/react npm error react@"^19.0.0" from the root project

]]>
React 19 发布了,你们用过 Suspense / Transition 吗 tag:www.v2ex.com,2024-12-06:/t/1095491 2024-12-06T05:00:21Z 2024-12-06T11:23:55Z X_Del member/X_Del https://react.dev/blog/2024/12/05/react-19

印象里 Suspense 和 Transition 这两个功能是 React 18 发布的。似乎 NextJS 之后,React 社区的焦点就变成了 SSR 和 RSC 。这两个功能一直没什么存在感,生态也很一般。

甚至直到现在,官方也没有说明第三方库该如何支持 Suspense:

The requirements for implementing a Suspense-enabled data source are unstable and undocumented. An official API for integrating data sources with Suspense will be released in a future version of React.

说实话这两个功能发布之后,我是一次也没用过。想问问大家用过这个两个 API 吗?体验如何?在新项目中是否会用这些 API ?

]]>
两三年 vue 开发经验,如何快速掌握 react 开发呀,感觉好多优化技巧需要自己去处理 tag:www.v2ex.com,2024-11-28:/t/1093411 2024-11-28T07:28:55Z 2024-11-29T11:51:58Z ellipsisAI member/ellipsisAI 马上 2025 年了,还有多少人在用 React Native ? tag:www.v2ex.com,2024-11-25:/t/1092297 2024-11-25T02:08:36Z 2024-12-07T03:55:08Z 17lian member/17lian 鄙人主 Java 开发,对前端技术了解不多,在之前 RN 火热🔥时期,由于会一点前端,上手相对简单,在移动端技术选型时选择了 RN,但是这几年慢慢的发现很多 RN 组件库都没人维护了,各大技术博客平台有关 RN 的帖子都停留在 3 ~ 5 年前。

想请教下移动端的大佬们,给点意见:

1 、如果继续使用 RN 开发,没有合适的组件库时,应该学 Objective-C ,还是 Swift ?

2 、推荐一个学习成本较低的框架( uniapp 就算了~~)

]]>
ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86