我使用的一个项目,我从去年开始,使用阵营路由器2,这是我的使用阵营路由器2阵营路由器2更有效的路由
const routes = (
<Router>
<Route path="/" component={Home}/>
<Route path="about" component={About}/>
<Route path="work" component={Work}/>
<Route path="contact" component={Contact}/>
<Route path="project/:project" component={ProjectPage}/>
<Route path="tictactoe/demo" component={TicTacToePage}/>
<Route path="blog/:blogid" component={BlogPage}/>
<Route path="*" component={NotFoundPage}/>
</Router>
);
export default routes;
每个项目的详细信息页面当前的路由配置存储在JSON在服务器上,而我的项目页面如下:
class App extends Component {
render() {
const url = this.props.routeParams.project;
const Project = Data.find(page => page.name === url);
if (Project !== undefined) {
return (
<Layout>
<div className="page-container">
<h1> { Project.title } </h1>
</div>
</Layout>
)
} else {
return (
<Layout>
<NotFoundPage />
</Layout>
)
}
}
}
export default App;
加载项目页面时,当然我遇到了比正常加载速度慢一点由于数据所需的查询.json文件:
export const Data = [
{id: 0, name: 'tictactoe', title: 'Coding an unbeatable TicTacToe opponent', demo: 'tictactoe/demo'}
]
这是提供更多动态路由基于服务器端与React的最佳方式?我对React非常陌生,我只是想全力以赴!在标准页面之间切换非常快,但是当我加载一个项目页面时,我看到一个白色屏幕闪烁。
编辑:我试图在我的componentWillMount添加一个承诺要求:
componentWillMount() {
const url = this.props.routeParams.project;
let promise = new Promise(function(resolve, reject) {
let response = Data.find(page => page.name === url);
resolve(response);
}).then(project => {
this.setState({
project: project,
},() => {
console.log("Project loaded: ");
console.log(project.title);
});
});
}
然而,我仍看到相同的白色屏幕闪烁和相同的加载速度为项目页面。
如果数据太大,导致应用程序速度变慢,您想对此做些什么? – lilezek
我只是想知道如果有人知道路由或加载内容的更好方式,如果不是那么那绝对没问题! – Olly
您可以在加载数据时发挥淡出效果。顺便说一下,你的JSON文件有多大?您公开的示例不够大,不足以产生影响。 – lilezek