Javascript 无法为React路由器链接手动刷新页面或键入URL
当我跟随一个指向另一个组件的链接,然后刷新页面,或者尝试手动键入它时,它只会将我带到一个空白html页面,而不会加载任何内容 这是我的应用程序组件:Javascript 无法为React路由器链接手动刷新页面或键入URL,javascript,reactjs,react-router,Javascript,Reactjs,React Router,当我跟随一个指向另一个组件的链接,然后刷新页面,或者尝试手动键入它时,它只会将我带到一个空白html页面,而不会加载任何内容 这是我的应用程序组件: class App extends React.Component { constructor(props) { super(props); this.state = { games: [], players: {}, }; } componentDidMount() { thi
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
games: [],
players: {},
};
}
componentDidMount() {
this.loadGames();
this.loadPlayers();
this.interval = setInterval(() => {
this.loadGames();
}, 5000);
}
componentWillUnmount() {
this.loadGames();
clearInterval(this.interval);
}
async loadGames() {
const response = await fetch('/api/games');
const myJson = await response.json();
const sortedJson = myJson.sort((a, b) =>
a.spectators > b.spectators ? -1 : 1,
);
this.setState({ games: sortedJson });
console.log('updating')
}
async loadPlayers() {
const response = await fetch('/api/playersList');
const myJson = await response.json();
this.setState({ players: myJson });
}
render() {
return (
<Router>
<Header />
<Switch>
<Route exact path="/">
<GameList players={this.state.players} data={this.state.games} />
</Route>
<Route exact path="/players/:id">
<Player />
</Route>
</Switch>
</Router>
);
}
}
从dist提供my index.html服务:
app.use(express.static(__dirname + '/../dist'));
我希望这样,当我键入url时,例如:
//应该以22166230作为id参数加载Players组件,而不是将我带到一个空白的index.html页面
我读过其他帖子,提到有一条通吃路线,我也包括在内。我不知道如何解决这个问题。我认为“一网打尽”意味着你有一个匹配任何东西的路由(通过不指定路径),因此如果没有其他路由匹配并通过
开关呈现,它将呈现,通常为404页<代码>
@DrewReese如何修改代码以实现此目的?Thank如果交换机上没有匹配的路由,则可以简单地添加一条不匹配的路由(即没有路径
)作为交换机中的最后一条路由,并将其作为“一网打尽”。
app.use(express.static(__dirname + '/../dist'));