如何获取 solidjs 信号的先前值?

How to get the previous value for a solidjs signal?

我想得到一个信号的前一个值怎么办?

const [route, setRoute] = createSignal(1)

createEffect(() => {
  console.log('route previous value is', route(0))
  console.log('route updated value is', route())
})

您提供给 createEffect 的回调函数可以采用等于效果函数上次调用的返回值的参数。因此,您可以执行以下操作:

const [route, setRoute] = createSignal(1);

createEffect((prev) => {
  const updated = route();

  console.log('route previous value is', prev);
  console.log('route updated value is', updated);

  return updated;
}, route());

请注意,您传递给 createEffect 的第二个参数是 prev 的初始值。

这在createEffect section of the Solid API docs中有描述。