在 svelte store 方法上触发组件函数

Trigger a component function on svelte store method

提问人:lache 提问时间:8/28/2023 更新时间:8/28/2023 访问量:24

问:

我有一个苗条的商店,有一种叫做“正确”的方法。当 right 被触发时,我希望我的组件文件中的函数 handleNextImage 运行。我不确定如何正确地做到这一点,谢谢!

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


const createMyStore = () => {
    const store = writable({
        Rows: [],
    });

    const { subscribe } = store;

    return {
        subscribe,
        right: (cb: (msg) => void) =>
            update((x) => {
             ....
            return x;
            }),
    };
};


export const myStore = createMyStore();

元件。苗条

import { myStore } from '@screens/home/myStore';

myStore.right(() => {
        console.log('go right in store');
        handleNextImage()

    });

const handleNextImage = () => {
        does a thing...
    };

JavaScript 方法 svelte store subscribe

评论

0赞 lache 8/28/2023
我现在意识到,也许我想使用商店的方式不是我认为的正确方式,我需要更改“正确”中的一些值,然后对我认为的组件中的值变化做出反应。
0赞 José Ramírez 8/28/2023
如果组件调用 ,那么它就像在下一行调用一样简单。如果 right 是某种事件,那么是的,把它放在似乎是接受的回调函数中。如果这不是一个事件,并且实际上您希望在值更改时调用该函数,那么请执行 .而不是使用看似不必要的 IF。这是为了让 Svelte 编译器在更改 时运行代码。store.right()handleNextImage()right()$: if ($myStore) handleNextImage()$myStore
0赞 nxtwrld 8/29/2023
我不确定预期的用途是什么,但如果你想在范围内触发,只需做一些事情cbrightright: (cb: (msg) => void) => update((x) => { cb('new x is '+x); return x; })

答: 暂无答案