Ваш скрипт инициализации компонента, то есть код внутри тега <script>
, не реактивен. Он запускается один раз, когда ваш компонент создан, и все. Думайте конструктор класса.
Только код в реактивных блоках $:
сохраняется в syn c и перезапускается, когда (реактивные) переменные, которые они содержат, изменяются.
Префикс $
дает вам значение внутри магазина. В вашем примере переменная user
- это само хранилище. console.log
это, вы увидите, что это объект с subscribe
методом et c. Переменная с префиксом дает вам значение внутри магазина. За кулисами Svelte делает подписку на хранилище (т.е. вызывает его метод subscribe
), когда ваш компонент создается, и отписывается, когда он уничтожается.
Между тем, если значение изменяется, переменная с префиксом $
будет реактивной. Но это будет иметь эффект, только если он находится в реактивном контексте. То есть либо реактивное выражение / оператор $:
, либо в разметке. Это верно для любого реактивного источника (реквизит, переменные верхнего уровня ...).