代码之家  ›  专栏  ›  技术社区  ›  Benoît Dumont

是否有方法为信号的rxResource()设置默认值,例如signal()

  •  0
  • Benoît Dumont  · 技术社区  · 10 月前

    似乎无法为rxResource设置默认值,如经典信号。

    我这样做:

      #errorsResource = rxResource<ParseError[], any>({
        request:() => ({
          action: "getErrors", 
          IdParse: this.#idParse(),
        }),
        loader: (request) => this.#_parseApi.request(request.request)
      })
    
      #errors = linkedSignal({
        source: this.#errorsResource.value,
        computation: () => {
          let val = this.#errorsResource.value()
          if ( val ) return val
          return []
        }
      })
    

    在加载器触发之前,我没有看到将rxResources初始化为默认值的更好方法吗?

    1 回复  |  直到 10 月前
        1
  •  1
  •   JSON Derulo    10 月前

    一个更简单的解决方案是 computed :

      #errorsResource = rxResource<ParseError[], any>({
        request:() => ({
          action: "getErrors", 
          IdParse: this.#idParse(),
        }),
        loader: (request) => this.#_parseApi.request(request.request)
      })
    
      #errors = computed(() => this.#errorsResource.value() ?? []);
    

    如果信号需要可写,您可以使用不太冗长的语法 linkedSignal 如下所示:

      #errorsResource = rxResource<ParseError[], any>({
        request:() => ({
          action: "getErrors", 
          IdParse: this.#idParse(),
        }),
        loader: (request) => this.#_parseApi.request(request.request)
      })
    
      #errors = linkedSignal(() => this.#errorsResource.value() ?? []);
    
    推荐文章