首页 > 解决方案 > 如何在反应应用程序中共享一个类实例?

问题描述

如何在反应应用程序中共享一个类实例?

我需要使用一个外部库,该库需要我对其进行实例化并在应用程序中使用该实例来访问各种方法/属性,

const instance = new LibraryModule(someInitData);

我在我的项目中使用反应功能组件。我不想每次需要使用它时都重新创建实例(可以认为是单例)。

如何与我的所有组件共享同一个实例?

标签: javascriptreactjssingletonreact-functional-component

解决方案


导入已经是全局的,你只需要导入模块:

class LibraryModule {
  x = 5;
}
const instance = new LibraryModule();

export default instance;
import instance from "./MyLibrary";
import Component from "./Component";

console.log(instance.x);

const App = () => {
  useEffect(() => {
    console.log(`from App, called last`, instance.x);
  }, []);
  return <Component />;
};
import instance from "./MyLibrary";

const Component = () => {
  useEffect(() => {
    instance.x = 10;
    console.log(`from component`, instance.x);
  }, []);
  return <>Component</>;
};

编辑fancy-https-j0s5u


推荐阅读