Javascript 可以从不使用路由器导入的文件设置组件路由吗?
我希望在接收端点数据时触发状态更改,以便同步我的GUI。 侦听传入套接字数据的文件,我们将调用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,以便在此处推送路由
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') {
...
}
}