Setup
setup: ({ Observable: Observable, plugins?: Array<Function>, HOStateStream: StateStream }) => void
setup 用于初始化配置 Rxact,并接受一个 options 对象参数,包含三个 key:
- Observable: 配置你选用的 Observable 实现。
- plugins: 配置 Rxact 组件。
- HOStateStream: StateStream 高阶组件,如果你对 StateStream 类做出了修改,需要将修改后的 StateStream 传入。
例子
// 注意,setup 在一个项目里只能执行一次
setup({ Observable: Rx.Observable }) // 配置 RxJS Observable
setup({ Observable, plugins: [rxactDebugger(), rxactReact()] }) // 配置 debugger 和 react 插件
class HOStateStream extends StateStream {
constructor(streamName, initialValue, stateStreams) {
const name = `HOS${streamName}`
return super(streamName, initialValue, stateStreams)
}
}
setup({ Observable, plugins: [], StateStream: HOStateStream }) // 配置改造过的 StateStream
plugin
plugin: StateStream => StateStream
plugin 是一个函数,StateStream 会将实例通过第一个参数传递给 plugin,开发者可以修改 instance 或者实现一个代理,在 plugin 函数中返回,StateStream 会接受新得到的实例。
例子
1.
// 给 StateStream 实例新增一个 property
const plugin = (instance) => {
instance.test = 'test'
return instance
}
setup({ Observable, plugins: [plugin] })
const stream = new StateStream('example')
console.log(stream.test)
// test
2.
// 生成一个代理
const plugin = (instance) => {
return new Proxy(instance, {
get: (target, prop) => {
console.log(`${prop} called`)
return target[prop]
}
})
}
setup({ Observable, plugins: [plugin] })
const stream = new StateStream('example')
stream.state$
// state$ called