只有 Root Route 被渲染。 IndexRoute 不渲染组件
Only Root Route is being rendered. IndexRoute Not Rendering Components
我正在构建一个简单的博客应用程序,App 组件(根路径)正在覆盖 "posts/new" 路由,而 IndexRoute 未呈现 posts_index 组件。
基本上,只有应用程序在渲染。欢迎任何反馈。见下文
// routes.js
import React from 'react';
import { Route, IndexRoute } from 'react-router';
import App from './components/app';
import PostsIndex from './components/posts_index';
import PostsNew from './components/posts_new';
export default (
<Route path="/" component={App}>
<IndexRoute component={PostsIndex}/>
<Route path="posts/new" component={PostsNew}/>
</Route>
);
// app.js
import React from 'react';
import { Component } from 'react';
export default class App extends Component {
render() {
return (
<div>React simple starter</div>
);
}
}
// posts_new.js
import React, { Component } from 'react';
class PostsNew extends Component {
render() {
return (
<div>Create Posts</div>
);
}
}
export default PostsNew;
// posts_index.js
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { fetchPosts } from '../actions/index';
class PostsIndex extends Component {
componentWillMount() {
this.props.fetchPosts();
}
render() {
return (
<div>List of Blog Posts</div>
);
}
};
export default connect(null, { fetchPosts })(PostsIndex);
react-router 会将嵌套路由作为子路由向下传递,因此在您的 App
组件中,您需要渲染 this.props.children
。
即将您的 App
组件更改为:
export default class App extends Component {
render() {
return (
<div>React simple starter</div>
{ this.props.children }
);
}
}
打开 /
时应该会看到 PostsIndex
组件,打开 /posts/new
!
时应该会看到 PostsNew
组件
查看官方react-router docs了解更多
我正在构建一个简单的博客应用程序,App 组件(根路径)正在覆盖 "posts/new" 路由,而 IndexRoute 未呈现 posts_index 组件。
基本上,只有应用程序在渲染。欢迎任何反馈。见下文
// routes.js
import React from 'react';
import { Route, IndexRoute } from 'react-router';
import App from './components/app';
import PostsIndex from './components/posts_index';
import PostsNew from './components/posts_new';
export default (
<Route path="/" component={App}>
<IndexRoute component={PostsIndex}/>
<Route path="posts/new" component={PostsNew}/>
</Route>
);
// app.js
import React from 'react';
import { Component } from 'react';
export default class App extends Component {
render() {
return (
<div>React simple starter</div>
);
}
}
// posts_new.js
import React, { Component } from 'react';
class PostsNew extends Component {
render() {
return (
<div>Create Posts</div>
);
}
}
export default PostsNew;
// posts_index.js
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { fetchPosts } from '../actions/index';
class PostsIndex extends Component {
componentWillMount() {
this.props.fetchPosts();
}
render() {
return (
<div>List of Blog Posts</div>
);
}
};
export default connect(null, { fetchPosts })(PostsIndex);
react-router 会将嵌套路由作为子路由向下传递,因此在您的 App
组件中,您需要渲染 this.props.children
。
即将您的 App
组件更改为:
export default class App extends Component {
render() {
return (
<div>React simple starter</div>
{ this.props.children }
);
}
}
打开 /
时应该会看到 PostsIndex
组件,打开 /posts/new
!
PostsNew
组件
查看官方react-router docs了解更多