我使用的一個項目,我從去年開始,使用陣營路由器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