V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  jaydenWang  ›  全部回复第 7 页 / 共 10 页
回复总数  196
1  2  3  4  5  6  7  8  9  10  
2025 年 12 月 24 日
回复了 jaydenWang 创建的主题 程序员 React 缺失的“M”层:我开发了 Zenith,重塑完整的 Model
@pakholeung372 思路很像,一开始也写过 this.store = create(
() => ({
current: undefined,
}),
)
2025 年 12 月 24 日
回复了 jaydenWang 创建的主题 程序员 React 缺失的“M”层:我开发了 Zenith,重塑完整的 Model
@novaline 没有重复造轮子,核心是 immer 。github 有跟 RTK 的对比
2025 年 12 月 24 日
回复了 jaydenWang 创建的主题 程序员 React 缺失的“M”层:我开发了 Zenith,重塑完整的 Model
@gkinxin 这一块示例不完整,github 有完整的示例。多个组件如何读取状态、set action
2025 年 12 月 24 日
回复了 jaydenWang 创建的主题 程序员 React 缺失的“M”层:我开发了 Zenith,重塑完整的 Model
@rich1e 这是 Zenith 的性能优势。借助 immer 的不可变状态,共享引用以及 Zenith 的计算属性,可以实现更改一个深度状态,只渲染状态树的这条分支
2025 年 12 月 24 日
回复了 jaydenWang 创建的主题 程序员 React 缺失的“M”层:我开发了 Zenith,重塑完整的 Model
@shunia 1. 解决了 zustand 没有计算属性的问题,有了计算属性,就不需要在组件层 selector ,可以把所有状态内聚的 store 中,计算属性 store 内以及各个组件都可以复用。可以做到没有 UI 的情况下,完成完整的业务逻辑
2. 把“set”方法保护起来,组件中是无法 set 的,可以自由读取状态,set 状态必须调用 store 的 action
2025 年 12 月 24 日
回复了 jaydenWang 创建的主题 程序员 React 缺失的“M”层:我开发了 Zenith,重塑完整的 Model
@lanten 不需要写模版语言,组件层使用起来跟 zustand 是一样的。额外支持:1. 默认局部状态,支持多实例; 2. 计算属性。3.复杂状态性能优势明显 store 是纯粹的 class 写法,没有额外的约束
2025 年 12 月 24 日
回复了 jaydenWang 创建的主题 程序员 React 缺失的“M”层:我开发了 Zenith,重塑完整的 Model
@uglyer 不是单例,也不推荐单例。使用 createReactStore 创建的都是局部状态,组件多实例彼此不影响。store 随着组件的生命周期销毁。直接 const todostore = new TodoStore()是单例,不推荐这么做,不过有些真正的全局状态可以这么干
@netabare 五个人协同开发,每个人都知道 get,set 在干嘛,但无法避免状态和逻辑散落在组件中,彼此就无法感知其他人做了什么。这在工程化上会是一个挑战
@codehz zustand 的使用体验,api 设计的非常棒。我觉得它缺失的是:set 不是私有方法,没能限制在 store 中调用;派生状态没有内聚在 store 中
@codehz 我很认同你说的 flux 核心原则,但是 zustand 做得并不好,派生状态目前只能通过 usememo 散落在各个组件里,并没有内聚到 store 中。另外一个就是组件可以直接 set zustand 的 state ,并没有限制到只能调用 store 的 action ,在实际开发中就会出现状态和 action 可能都大量散落在组件中的情况
@codehz Zustand 的设计和使用方式,被默认理解和实践为一种‘函数式姿态’,但它在工程语义上其实是在模拟对象模型
确实可以,但需要这么多"约定"和"注意事项"来规避闭包陷阱时,是否说明这套 DSL 本身在表达"有状态对象"时不够直观
Zenith store 灵感来源于 mobx 的<https://zh.mobx.js.org/defining-data-stores.html>这篇文章。但是实现和 api 不相同
抛开 immer ,Zenith 和 Zustand 最主要区别是:
1. Zustand 太自由了,Zenith 修改状态只能约束在 store 中,工程化不友好
2. Zenith 支持使用 memo 计算属性
3. Zenith 派生状态都内聚在 store 中
https://www.domd.app/ 支持直接复制为 markdown ,支持 AI 输入。近期会添加文件管理,支持多端同步
绝大部分网盘同步代码是会有问题的,试下来 dropbox 是做的最好的,可以无感换电脑继续开发
@WTH30 1. 确实,这个会尽快调一下。vscode 插件是有过行间距优化
2. 现在想法是,点击空白区域光标 focus 到文章最后或者失焦前的位置
@imjiaoyuan 有考虑的,近期会先开源插件。vscode 插件保留了源码模式,可以双向编辑
@louisyoungx 目前除了代码高亮之外没有用其他编辑相关的库,还是比较轻量的
1  2  3  4  5  6  7  8  9  10  
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3432 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 18ms · UTC 04:33 · PVG 12:33 · LAX 21:33 · JFK 00:33
♥ Do have faith in what you're doing.