【发布时间】:2016-09-28 00:59:09
【问题描述】:
有点新反应,喜欢图书馆,但遇到路由器各种头痛。
这是我目前的代码,问题如下:
// 路由.js
var React = require('react');
var ReactDOM = require('react-dom');
import {Router, Route, IndexRoute, browserHistory} from 'react-router';
import App from './App';
import MainLayout from './components/MainLayout';
import Home from './components/home/Home';
import Product from './components/product/Product';
import Category from './components/category/Category';
import Cart from './components/cart/Cart';
import NotFound from './components/NotFound';
export default (
<Router history={browserHistory}>
<Route component={App} >
<Route path='/' component={Home} />
<Route path='/product/:productId' component={Product} />
<Route path='/category/:catNumber' component={Category} />
<Route path='/cart' component={Cart} />
</Route>
<Route path='*' component={NotFound} />
</Router>
)
现在,我遇到了三个主要问题,这让我觉得我可能只是严重误解了路由器的工作原理。
1) 来自 react [http://localhost:3002/#/?_k=xv1opy] 的奇怪 url 哈希,即使它们不应该存在,因为我已经设置了 history={browserHistory}
2) 浏览器控制台警告:“警告:位置“/”不匹配任何路线”和“警告:您无法更改;它将被忽略。”不知道这里发生了什么,因为我已经非常清楚地定义了 Home 组件来渲染 path='/'。
3) 可能相关,但每当我更改路线时,整个应用程序都会重新加载,清除我所有的商店数据。不理想,但我认为一旦我修复了#1 和(尤其是)#2,就可以解决这个问题。
更多可能有用的信息:
// app.js 渲染() 方法
render() {
return (
<div>
<Header />
<Subheader />
{this.props.children}
<Footer />
</div>
);
}
// index.js
'use strict';
import React from 'react';
import ReactDOM from 'react-dom';
import Routes from './routes';
if ( process.env.NODE_ENV !== 'production') {
window.React = React;
}
ReactDOM.render(Routes, document.getElementById('main'));
任何对 React 更熟悉的人可以在这里为我指明正确的方向吗?在过去的两天里一直在为此拉头发,并且似乎阅读了所有关于 react-router 的指南都无济于事。
【问题讨论】:
标签: javascript reactjs react-router