javascript - 是否可以从未导入 withRouter 的文件设置组件路由?

标签 javascript reactjs sockets react-router

我想在收到端点数据时触发状态更改,以便同步我的 GUI。

监听传入套接字数据的文件我们将调用sockets.js。在 sockets.js 内部我想调用路由转换。

if (data === 'gameHasLoaded') { 
  history.push('/game');
} 

到目前为止一切顺利,但是......

我无法从'react-router-dom'导入{ withRouter },因为sockets.js位于公共(public)文件夹中。我是否必须重新配置 sockets.js 进行捆绑并导入 React 才能在此处推送路由?

<小时/> sockets.js

var master = new WebSocket('ws://' + document.domain + ':' + '8000');

function joinQueue(){...};
function leaveQueue(){...};
function rematch(){...};

master.onmessage = function (event) {
    if (data === 'gameHasLoaded') { 
      history.push('/game');
    } else if (data === 'otherEvent') {
      ...
    }
}

最佳答案

你有两个选择。

选项 1:使用 React-websocket在 React 中,您将能够使用 history.push('/game'); 选项 2:保留所有内容,使用 location.href '/game'; 代替 history.push('/game');

我更愿意选择选项一,因为选择选项二,您将重新加载整个页面,而不是利用单页应用程序的优势之一

关于javascript - 是否可以从未导入 withRouter 的文件设置组件路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46267417/

相关文章:

c++ - pcap_stats 是否在 Ubuntu 14.04 LTS 上实现?

c - 没有keepalive的物理断开的tcp套接字的生命周期

javascript - 如何在 JavaScript 中同步调用函数内的一组语句?

javascript - TypeError : moment(. ..).tz 不是函数

css - React 使用来自另一个标签的 onClick 更改 className 的样式

javascript - Material-ui V3 在获取数据(或页面加载)后不会加载第一个选项卡

javascript - React.js - 如何创建 Accordeon(与 sibling 交谈)

javascript - 如何减慢 jquery click 函数的执行速度?

reactjs - 目前没有配置加载器来处理这个文件

sockets - 如何创建将监听特定端口并接受 TCP 连接(非 https)的 servlet