代码之家  ›  专栏  ›  技术社区  ›  Ooker

计算信号可以具有可变的类函数吗?

  •  1
  • Ooker  · 技术社区  · 6 月前

    在我计算的一个信号中,我需要读取文件上的数据,这是一个运行时函数。由于我需要计算出的信号在客户端上运行,所以我需要弄清楚如何输入变量。我试着这样做:

    import { render } from "preact";
    import { signal, computed } from "@preact/signals";
    
    const text = signal('This is changed on client');
    
    const textAndData = computed((num) => {
      const data = `And this data is read on the server: ${num}`
      return `${text.value}. ${data}`;
    });
    
    function Result() {
      const num = 3
      return (
        <>{textAndData(num).value}</>
      );
    }
    
    render(<Result />, document.getElementById("app"));
    

    Playground

    这会产生错误: TypeError: textAndData is not a function 。有办法做到这一点吗?我可以看到,如果我能在模块内部创建信号(即。 useSignal , useComputed )那我就不用担心了。但为了信号管理,我想声明模块中的所有信号并导出它们。

    1 回复  |  直到 6 月前
        1
  •  1
  •   Iaroslav Sobolev    6 月前

    如果您不想使用创建本地状态 useSignal useComputed 尽你所能,为 num / data 。这样你就可以把它放在一个地方,从任何需要的地方更新num都会自动触发的更新 textAndData .

    const num = signal(3);