【发布时间】:2016-07-10 16:07:11
【问题描述】:
所以这是我第一次设置这样的东西,我有点挣扎。
我使用https://github.com/reactjs/react-router/tree/master/examples/huge-apps 作为我的学习资源,并尝试为 React 应用程序设置一个非常基本的布局。
似乎正在发生的事情是,在路径更改后,react 不会重新渲染,因此不会将任何内容添加到 dom 中
当我点击转到主页组件链接时,URL 栏会发生变化,但 DOM 不会发生变化...
这是我的代码 [我省略了我的目录结构,因为我认为这对问题不重要]
index.jsx:加载 react 应用并获取所有路由
import 'babel-polyfill';
import React from 'react';
import { render } from 'react-dom';
import { Router, browserHistory } from 'react-router';
import Routes from './app/Routes.js';
render(
<Router
history={browserHistory}
routes={Routes}
/>,
document.querySelector('.js-mount-point')
);
Routes.js:保持所有路由的常量,这样我就不必在 index.js 中手动指定它们
import App from './App.jsx';
import Home from '../routes/Home/Home.js';
const Routes = {
path: '/',
component: App,
childRoutes: [
Home,
],
};
export default Routes;
App.jsx:我的应用程序的父级大多数组件
import React from 'react';
import { Link } from 'react-router';
const App = props => {
console.log(props);
return (
<div>
<h1>Hello World!</h1>
<p><Link to="#/home">Go to Home Component</Link></p>
{props.children}
</div>
);
};
export default App;
Home.js 获取我所有的路由信息,getComponent 就住在这里
const HomeRoute = {
path: 'home',
title: 'Home',
getComponent(nextState, cb) {
require.ensure([], (require) => {
cb(null, require('./HomeComponent.jsx').default);
});
},
};
export default HomeRoute;
HomeComponent.jsx我非常基本的家庭组件
import React from 'react';
const HomeComponent = () => (
<div>
<h2>Welcome Home</h2>
</div>
);
export default HomeComponent;
Edit1:制作 App.jsx 纯函数
Edit2:固定 Routes.js
Edit3:修复 Home.js
Edit4:最终修复,
const HomeComponent =
改为
const HomeComponent = () => (
【问题讨论】:
-
“Edit1: Made App.jsx 纯函数”你不知道。
render在那里做什么?你的意思是return? -
@YuryTarabanko 啊,伙计复制了我的代码的错误版本...给我一秒钟
-
您实际上不需要
render任何地方都需要index.jsx文件。 -
修复
HomeRoute。路径应该是home。链接应该是<Link to="home">Blah Blah</Link>。 -
检查
HomeComponent应该是函数const HomeComponent = () ****=>**** (..)
标签: javascript reactjs react-router