How to get store value from another store?
Asked Answered
G

1

18

How to get store value from another store? https://svelte.dev/repl/0ab80c2fb8e045958d844bd4b11c04a9?version=3.22.1

In the example I include a variable inputVal in stores.js file and changing in
set: (val) => {inputVal=val; set( val );}, and use in fn setToZero

Question: how to do it directly without using the inputVal variable?

Godewyn answered 4/5, 2020 at 4:55 Comment(0)
C
51

Use get(store) to access a stores value.

Example:

import {get, writable} from 'svelte/store'

const myStore = writable(41)

const value = get(myStore)

If you are accessing a store from within a .svelte component, there is a shortcut. Just prefix the store name with $, eg. const value = $myStore.

Crimp answered 4/5, 2020 at 5:28 Comment(3)
Minus of this solution: "This works by creating a subscription, reading the value, then unsubscribing. It's therefore not recommended in hot code paths." svelte.dev/docs#getGodewyn
Alternatives: 1) Use store.subscribe(callback), the callback will be notified when the value changes. 2) Use a derived store derived([storeA, storeB, ...], callback), when any dependent stores change your callback can produce a new (aggregate) valueCrimp
@lukaszpolowczyk's link is now svelte.dev/docs#run-time-svelte-store-getRegalado

© 2022 - 2024 — McMap. All rights reserved.