工业聚
工业聚
@ScarboroughCoral `ListModule` 不暴露 Event 是已知的问题。最初是添加了 ItemAddedEvent, ItemDeletedEvent, ListChangedEvent 等事件,但后面发现,这些事件无法可靠地触发,因为 SetListCommand 可以将 List 整体替换,其中有些可能是 add 的新元素,有些可能是 delete 了,而有些可能 re-order 了。 这将导致业务逻辑依赖 ItemAddEvent 时,有些不是通过 AddItemCommand 添加的 added items 可能不会触发。 正因如此,remesh 才意欲引入 `entity-component-system`...
可以将 `downloader` 封装成 `rxjs` 的 `Observable` 内部管理 `cancel` 逻辑. 大概像下面这样处理: ```ts import { Observable, takeUntil, switchMap } from 'rxjs' type DownloadState = { type: 'progress' progress: number } | {...
如果要支持同时下载很多个,可以将 `switchMap` 替换成 `mergeMap`,并且根据 `DownloadCancelledEvent` 携带的 url 进行过滤。以及拓展 `DownloadState`使之携带 `url`等数据 大概像下面这样: ```ts domain.effect({ name: 'DownloadEffect', impl: ({ fromEvent }) => { return fromEvent(DownloadStartedEvent).pipe( // for each download event, create a...
理论上不会产生这个问题,需要检查一下 `getQueries` 自身的类型定义是否健全。 此外,`Remesh` 约束了命名规范,`getBuyer` 不是合法的 `Query`,合法的 `Query name` 是大写字母开头且以 `Query` 作为后缀。
你的截图里的代码,有很多不规范的地方。 获取 events 类型其实很简单,只要在编辑器里 hover 上去查看一个普通 event 的类型,复制出来组成一个 object type 即可。 你的场景其实是要定义一个 Remesh Modules,一般做法如下: ```ts import { Remesh, RemeshCommandOutput, RemeshDomainContext } from 'remesh' type Buyer = { } type OrderState...
240 行的 todo domain 是正常的,文件长不意味着一定会难以阅读,还是要看代码自身的复杂度。多人协作文件冲突按照 git 的方式解决。 单个 domain 也不必按照 query, command, event, effect 的分类进行拆分,而是按照 feature 来拆分,一个 feature 可以有自己的一套 query, command, event ,effect,按照上面示意过的 `Remesh Module` 的风格进行设计和封装。跟 react component 通过 react...
一种函数组合风格 ```javascript const pipe = (...args) => args.reduce((a, f) => f(a)) const bind = f => list => [...list.map(f)] const flat = list => list.flat(1) const pair = list =>...
这个是已知问题,remesh-react 以 esm 形式被使用,但 react 的一个包是 cjs 的。可以用 4.0 最新版本,默认 cjs 输出。 或者使用 `remesh-react/cjs` 指定使用 cjs 版本。
找到一篇更详尽的文章:[Haskell functions as functors, applicatives and monads](https://eli.thegreenplace.net/2018/haskell-functions-as-functors-applicatives-and-monads)
文档挪到 farrowjs.com 域名里了,可以访问 https://www.farrowjs.com/docs/api/general/farrow-schema 查看 farrow-schema. 后续我们会再优化一下各个 packages 的 README,提供一些快捷链接跳转