Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 可以从不使用路由器导入的文件设置组件路由吗?_Javascript_Reactjs_Sockets_React Router - Fatal编程技术网

Javascript 可以从不使用路由器导入的文件设置组件路由吗?

Javascript 可以从不使用路由器导入的文件设置组件路由吗?,javascript,reactjs,sockets,react-router,Javascript,Reactjs,Sockets,React Router,我希望在接收端点数据时触发状态更改,以便同步我的GUI。 侦听传入套接字数据的文件,我们将调用sockets.js。在sockets.js中,我想调用路由转换 if (data === 'gameHasLoaded') { history.push('/game'); } 到目前为止还不错,但是 我无法从“react router dom”导入{withRouter},因为sockets.js位于公用文件夹中。我是否必须重新配置要捆绑和导入的sockets.js,以便在此处推送路由

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

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

if (data === 'gameHasLoaded') { 
  history.push('/game');
} 
到目前为止还不错,但是

我无法从“react router dom”导入{withRouter},因为
sockets.js
位于公用文件夹中。我是否必须重新配置要捆绑和导入的
sockets.js
,以便在此处推送路由


sockets.js

你有两个选择

选项1:使用inside react,这样您就可以使用
history.push('/game')
选项2:保持一切原样,而不是
history.push('/game')使用
location.href'/game'


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

我无法理解您的要求和问题。你能试着澄清一下你的问题吗?问题是我不能在这里调用
history.push('/game')
,因为这里没有对withRouter的引用。我无法在文件中导入,因为它不是react组件,也没有与react捆绑在一起。我明白了。你能给我看看sockets.js的全部代码吗?@MatthewBarbara是的。我希望我的回答足以回答你的问题。如果不是,请告诉我。谢谢!所以,
sockets.js
确实需要重构成一个组件,我需要一个助手库来将websocket作为元素注入?我要给这张照片打个比方:-)很高兴听到:)
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') {
      ...
    }
}