如何在Fresh Deno中创建全局上下文



我想创建一个GunDB的全局实例,这样它只在客户端初始化一次,然后我可以在任何岛上使用它。

我在index.tsx中尝试简单地添加const gun = Gun()并向岛发送道具,唯一的问题是岛组件看不到Gun实例,这很正常,因为Gun实例是在服务器端初始化的,而不是在客户端初始化的。

理论上,它只需要客户端的全局上下文。像createContext()这样的东西在反应。

Fresh v1.1增加了Preact Signals支持。

预作用信号:

信号是一种表达状态的方式,可以确保应用程序无论变得多么复杂都能保持快速。信号基于反应原理,提供了出色的开发人员工效学,并为虚拟DOM优化了独特的实现。

// Imagine this is some global state that the whole app needs access to:
const count = signal(0);
function Counter() {
return (
<button onClick={() => count.value++}>
Value: {count.value}
</button>
);
}

您可以创建一个模块,为全局Gun实例导出信号:

import { signal } from "@preact/signals";
export default signal(Gun());

然后,您可以将其导入任何交互式孤岛模块,以便在服务器端和客户端使用:

import gun from "./path/to/gun.ts";

相关内容

  • 没有找到相关文章

最新更新