javascriptsveltesvelte-store

Is it possible to access Svelte store from external js files?


I am wondering if i would be able to access my Svelte store values from a plain .js file.

I am trying to write functions returning a dynamic value based on a store value, to import them in any component. But in a plain .js file I can't just access the store value with the $ sign..

Quick exemple of a basic function that uses a store value and could be used on multiple components:

//in .svelte

function add() {
    $counter = $counter + 1;
}

EDIT: rephrasing a bit

EDIT: Found a solution but i don't really know if it's really optimized..

//in .js file

import { get } from "svelte/store";
import { counter } from "./stores";

export function add() {
    var counterRef = get(counter);
    counter.set(counterRef + 1);
}

Solution

  • In addition to rixo's answer, a better way to implement add is to use the store's update method:

    import { counter } from "./stores";
    
    export function add() {
        counter.update(n => n + 1);
    }
    

    You could also create a custom store that implemented that logic.