【发布时间】:2019-01-15 14:52:22
【问题描述】:
我是反应编程的新手。试图解决我自己的问题,但遇到了以下问题。
我有以下反应路由器代码。
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
class Main extends Component {
render() {
return (
<Router>
<Switch>
<Route exact path='/' component={Content} />
<Route path='/user/:id' component={User} />
<Route path='*' component={NotFound} />
</Switch>
</Router>
);
}
export default Main
在内容中有带有照片的用户列表。如果我点击人物照片,它会将我重定向到特定用户。
我的代码如下:
<Link to={'/user/' + userItem.id}>
<img className="useritem-img" src={userItem.photo} alt={userItem.tagline}/>
</Link>
它将使用新 URL 正确打开用户组件,例如:http://localhost:3000/user/457365 点击照片。
但是,当在新标签中复制并粘贴相同的 url 时,它不会打开。可能是我在某些地方错了。
任何帮助将不胜感激。
编辑:
当我打开该页面时出现以下错误:
无法获取 /user/457365
我没有使用 create-react-app 只是简单的反应应用程序。
下面是我的 server.js
app.use(express.static('dist'));
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, './index.html'));
});
app.listen(port, function (err) {
if (err) {
console.log(err);
} else {
open('http://localhost:' + port);
}
})
【问题讨论】:
-
这是使用
create-react-app吗? -
但是不要在你的控制台中出现任何错误?
-
你是使用服务器端语言还是仅仅响应 js 应用程序?
-
当您将整个 url 复制并粘贴到浏览器中时,浏览器会询问您的服务器服务器上是否存在具有此类路由的文件。当然不是因为您正在创建 SPA。因此,您的服务器需要将 index.html 返回到任何传入请求。
-
@apokryfos 当然,“静态”资产除外 ;-)(即 js 文件、css 文件、图像等)
标签: javascript reactjs react-router