首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >响应多个导入、一个模块缓存重用

响应多个导入、一个模块缓存重用
EN

Stack Overflow用户
提问于 2020-08-16 14:05:00
回答 1查看 75关注 0票数 0

我正在使用Centrifugo websocket服务器。我需要连接到Centrifugo并存储连接instance,以便将来从多个components中使用。

这是从./socket.js创建这种导出的好方法吗?

如果我要导入多个centrifuge.connect()模块的话,centrifuge.setToken('')./socket.js会被执行吗?

./socket.js

代码语言:javascript
复制
const Centrifuge = require('centrifuge');

const centrifuge = new Centrifuge('ws://localhost:8000/connection/websocket');
centrifuge.setToken('');
centrifuge.connect();

export default {
    socket: centrifuge,
};

./App.jsx

代码语言:javascript
复制
import React from 'react';
import { socket } from '../socket'; // first import
import SomeComponent from './components/SomeComponent';
import SomeSecondComponent from './components/SomeSecondComponent';

export default () => (
    <>
        <SomeComponent />
        <SomeSecondComponent />
    </>
)

./components/SomeComponent.jsx

代码语言:javascript
复制
import React from 'react';
import { socket } from '../socket'; // second import

export default () => <>...</>;

./components/SomeSecondComponent.jsx

代码语言:javascript
复制
import React from 'react';
import { socket } from '../socket'; // third import

export default () => <>...</>;

什么是创建实例和重用它的最佳方式?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-16 14:43:03

如果您只想使用单个实例,最好只在一个地方导入它。最好导入父组件并将其作为道具传递给子组件。

所以你的app.jsx会变成:

代码语言:javascript
复制
import React from 'react';
import { socket } from '../socket'; // first import
import SomeComponent from './components/SomeComponent';
import SomeSecondComponent from './components/SomeSecondComponent';

export default () => (
    <>
        <SomeComponent socket={socket} />
        <SomeSecondComponent socket={socket} />
    </>
)

现在套接字将作为两个组件中的支柱。

就像。在./components/SomeComponent.jsx

代码语言:javascript
复制
import React from 'react';

export default ({socket}) => <>...</>;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63437837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档