【发布时间】:2018-02-23 13:22:39
【问题描述】:
我是 React 和 redux 的新手。我在浏览 URL 时遇到问题。 (请查看以下文件)。 Index.js 是我的反应文件,它与 id 为“index”的 html 页面链接。在 Index.js 文件中,我正在渲染 Home.jsx 文件的“主页”组件。在 Home.jsx 文件中,我添加了两个路由列表 AddForm,路径显示在那里。我还在那里渲染了一个反应组件'HomeNavBar'。 AddForm.js 和 ListBox.jsx 分别是带有 AddForm 和 List 组件的反应文件。带有 HomeNavBar 组件的 HomeNavBar.jsx 有一个链接“添加”,如图所示。默认情况下会显示 List 组件。单击带有“添加”的链接时,我想用从 AddForm.js 呈现的 AddForm 组件替换 List 组件。现在的问题是当我点击链接时,地址栏中的 url 正在改变。但组件没有改变。仍然显示 List 组件。控制台没有错误。有人请帮助我。 (说真的,我想用路由器来做这个)
索引.js
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import store from '../store/store';
import Home from './Home.jsx';
ReactDOM.render(<Provider store={store}>
<Home />
</Provider>, document.getElementById('index'));
Home.jsx
import React from 'react';
import List from './ListBox.jsx';
import AddForm from './AddForm.react.js'
import { BrowserRouter as Router, Switch, Route, Link } from 'react-router-dom';
import HomeNavBar from './HomeNavBar.jsx'
class Home extends React.Component {
render(){
return(
-------blah blah----
<div>Blah blah balh</div>
<HomeNavBar />
<div>
<Router>
<Switch>
<Route exact path="/" component={List} />
<Route path="/add" component={AddForm} />
</Switch>
</Router>
</div>
------blah--blah--------
)}}
export default Home
AddForm.js
also a react file with some html form contents
ListBox.jsx
also a react file with some html contents
HomeNavBar.jsx
import React from 'react';
import { BrowserRouter as Router, Switch, Route, Link } from 'react-router-dom';
class HomeNavBar extends React.Component {
render() {
return(
<Router>
<div>
<li><Link to={'/add'}>Add Movie</Link></li>
--------blah blah blah-------------------
</div>
</ Router>
);
}
}
export default HomeNavBar
web.config 文件是
var path = require("path")
var webpack = require('webpack')
var BundleTracker = require('webpack-bundle-tracker')
module.exports = {
context: __dirname,
entry: './assets/js/components/Index.react.js', // entry point of our app. assets/js/index.js should require other js modules and dependencies it needs
output: {
path: path.resolve('./assets/bundles/'),
filename: "[name].js",
},
plugins: [
new BundleTracker({filename: './webpack-stats.json'}),
],
module: {
loaders: [
{ test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader', query:{ plugins: ['transform-decorators-legacy'] }}, // to transform JSX into JS
{ test: /\.jsx?$/, exclude: /node_modules/, loader: 'class-to-classname', query:{ plugins: ['transform-decorators-legacy'] }}, // to transform JSX into JS
],
},
resolve: {
extensions: ['.js', '.jsx']
},
}
在演示中,您可以看到,当我单击 添加电影 时,网址会发生变化,但内容不会发生变化。内容仅在刷新时更改。
【问题讨论】:
标签: reactjs react-router react-redux