useSignal()

使用 useSignal() 儲存任何單一值,類似於 useStore()useSignal 在重新渲染組件方面經過了高度優化。即使信號本身是在父組件中定義的,它也能夠跳過父組件的重新渲染。useSignal 適用於所有 基本類型 以及非嵌套/扁平物件。如果您需要儲存陣列或複雜物件,請改用 useStore

以下是一些範例

const intStore = useSignal(0);
const stringStore = useSignal('foo');
const booleanStore = useSignal(true);
const objectStore = useSignal({fruit: 'apple', color: 'green'});
 
// DON'T DO THIS!
const arrayStore = useSignal(['banana','oranges']);
const nestedObjectStore = useSignal({
  fruits: {
    banana: 10,
    apple: 5
  },
  vegetables: {
    tomato: 7,
    broccoli: 14
  }
});

要讀取或更新值,您可以直接訪問 value 屬性

<>
  <button onClick$={() => intStore.value++}>Click me</button>
  <p>{intStore.value}</p>
</>

它還可以保存由組件創建的 DOM 元素的引用。

檢索 DOM 元素引用分為兩個部分

  1. useSignal() 返回一個儲存物件,該物件包含一個 value 屬性,該屬性最終將包含引用。
  2. ref={_ref_variable_} 是一個屬性綁定,它會將 ref 物件的 value 屬性設置為 DOM 元素。

範例

右側的範例使用 useSignal() 來獲取對 aside 元素的引用。但是,它缺少 ref 屬性綁定。添加 ref 屬性綁定以使範例按預期工作。

編輯教學