Skip to content

监听信号组件

title

阅读本节时请先理解computedwatch章节。

关于

计算信号组件是将computedObject封装成信号组件,当computedObject中的状态数据变化时,会自动触发信号组件的重新渲染。 而监听信号组件是将watchObject封装成信号组件,当watchObject中的状态数据变化时,会自动触发信号组件的重新渲染。

方法函数签名如下:

ts
interface SignalComponentType<State extends Dict>{
    <Value=any, Scope=any >(render:SignalComponentRender,getter:AsyncComputedGetter<Value,Scope>):React.ReactNode
    <Value=any, Scope=any >(render:SignalComponentRender,getter:ComputedGetter<Value,Scope>):React.ReactNode
    <Value=any, Scope=any >(render:SignalComponentRender,builder: ObserverDescriptorBuilder<string,Value,Scope>):React.ReactNode;
}

监听信号组件

就如何计算信号组件是对computed的封装一下,监听信号组件是可以实现watch的封装。

ts
$<any>(
    // 渲染函数
    ({value})=>{
      return <div>{value}</div>
    },
    watch(({path,value},watchObj)=>{
      return xxxx
    })
)

以下是一个监听信号组件的示例:

  • 上例中,我们使用watch来动态创建一个监听信号。
  • 当状态中的validate变化时,我们计算出整个状态的有效性,然后将有效性的结果写入到validate中,从而触发监听信号组件的重新渲染。