Skip to content

useShareState

useShareState(source, options?): Ref<any>

利用 Event Bus 实现跨页面组件之间的状态数据同步,可以自由选择同步哪些字段

参数

NameTypeDescription
sourceWatchSource<any>源数据,发生变化时会覆盖更新 state
optionsObject
options.keyFn(val: any) => string唯一标识的字段名称,作为 eventBus 的事件名称的一部分
options.namespacestring命名空间,用于区分相同类别的共享
options.publishKeysundefined | string | string[]控制当自身发生变化时,哪些字段需要向外部同步,支持多层级路径,不传默认为全部
options.subscribeKeysundefined | string | string[]控制当外部发生变化时,哪些字段需要向自身同步,支持多层级路径,不传默认为全部

返回值

Ref<any>

已共享状态的 ref 变量

Deprecated

使用 createShareState 方法代替

示例

ts
const SHARE_STATE_NAMESPACE = {
  USER: 'user',
}
const myRef = ref({id: '1', count: 2})
const state = useShareState(myRef, {
  namespace: SHARE_STATE_NAMESPACE.USER,
  keyFn: val => 'user-id-' + val.id,
  subscribeKeys: ['count'],
})

源码

use-share-state.js