有没有办法将 svelte store 与 React.js 一起使用。我真的很喜欢它的简单性以及它的替换方式switch case。这是 svelte 文档中的示例代码。
import { writable } from 'svelte/store';
function createCount() {
const { subscribe, set, update } = writable(0);
return {
subscribe,
increment: () => {},
decrement: () => {},
reset: () => {}
};
}
export const count = createCount();
Run Code Online (Sandbox Code Playgroud)
Cri*_*ole 12
使用 React hooks 可以轻松做到这一点:
import {useEffect, useState} from 'react';
import {get} from 'svelte/store';
const unset = Symbol();
export function useReadable(store) {
const [value, set] = useState(unset);
useEffect(() => store.subscribe(set), [store]);
return value === unset ? get(store) : value;
}
export function useWritable(store) {
const [value, set] = useState(unset);
useEffect(() => store.subscribe(set), [store]);
return [
value === unset ? get(store) : value,
store.set,
store.update
];
}
Run Code Online (Sandbox Code Playgroud)
编辑
在这个答案之后,我实际上把它打包了。该代码已在生产中使用。这很容易理解。https://www.npmjs.com/package/react-use-svelte-store