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 元素引用分為兩個部分
useSignal()
返回一個儲存物件,該物件包含一個value
屬性,該屬性最終將包含引用。ref={_ref_variable_}
是一個屬性綁定,它會將ref
物件的value
屬性設置為 DOM 元素。
範例
右側的範例使用 useSignal()
來獲取對 aside
元素的引用。但是,它缺少 ref
屬性綁定。添加 ref
屬性綁定以使範例按預期工作。