Comments (1)
Remesh.domain
不支持泛型,这是 TypeScript
类型系统层面约束的。Remesh Module
是普通的函数,它支持泛型。
包一层 factory
传递泛型参数并加上 memoize
是不安全的,会导致两个不同泛型参数的 domain
实例是同一份。
除非 factory
+ memoize
+ memo-key
让泛型类型和缓存 key 一一对应。
const DomainMap = new Map<string>()
export const GenericDomain = <T>(key: string)=> {
if (DomainMap.has(key) return DomainMap.get(key)!
return Remesh.domain(...)
}
useRemeshDomain(GenericDomain<Message>('message'))
useRemeshDomain(GenericDomain<User>('user'))
// 封装一下
const MessageDomain = GenericDomain<Message>('message')
const UserDomain = GenericDomain<User>('user')
其实这个做法,用 Remesh Module
实现也可以,还能传递参数。
const GenericModule = <T>(domain: RemeshDomainContext, args) => {
// return { query, command, event }
}
const MessageDomain = Remesh.domain({
...,
impl: domain => {
const { query, command, event } = GenericModule<Message>(domain, ...)
}
})
const UserDomain = Remesh.domain({
...,
impl: domain => {
const { query, command, event } = GenericModule<User>(domain, ...)
}
})
from remesh.
Related Issues (20)
- 调试问题:怎么样可以看到所有domain的state、query当前值 HOT 2
- 一个Query 使用useRemeshQuery和effect fromQuery同时订阅,effect的订阅会失效 HOT 8
- remesh4.0.0更新使用react useSyncExternalStore,导致无法正常使用remesh包。 HOT 2
- remesh如何在vue2.6中使用 HOT 5
- npm 包中的github链接错误 HOT 2
- remesh 一定需要搭配rxjs使用吗? HOT 1
- vue 2.7.14 中 使用remesh-vue报错app.provide为undefined HOT 1
- remesh在逻辑分离的同时怎么考虑到和UI同步的情况呢 HOT 5
- 可以实现多实例吗 HOT 8
- feat Serializable 支持 readonly HOT 4
- 中文文档有误 HOT 3
- 要是有个交流群或者discord就好了 HOT 6
- StorageExtern Type error HOT 2
- 组件内部Query和Update一个状态,每次重新打开组件的时候,Query对应的State又被初始化为默认值了 HOT 3
- event和effect的使用问题 HOT 4
- query的类型没有自推倒,那类型如何定义? HOT 8
- Module not found: Error: Can't resolve 'use-sync-external-store/shim' in '/project/remesh-example/node_modules/remesh-react/esm' HOT 1
- ListModule 暴露 event 的必要性? HOT 3
- clearDomainStorageIfNeeded 清理之前可以有一个保留时间吗 HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from remesh.