Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.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 无法为React路由器链接手动刷新页面或键入URL_Javascript_Reactjs_React Router - Fatal编程技术网

Javascript 无法为React路由器链接手动刷新页面或键入URL

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

当我跟随一个指向另一个组件的链接,然后刷新页面,或者尝试手动键入它时,它只会将我带到一个空白html页面,而不会加载任何内容

这是我的应用程序组件:

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'));