應用的要求是這樣的:導航到用戶登錄成功的主頁反應+終極版+反應路由器,終極版
1)具有簡單的用戶名和密碼
2)登錄表單一旦用戶提交登錄表單用戶應導航到家庭部件
爲了做到這一點,我已經配置終極版與反應路由器-終極版
問題:
在發送一個正確的用戶名和密碼,服務器認證併發送正確的標記,但現在我成功地顯示URL正確的路由,但分量不加載,
這裏是我的文件
LoginForm的
import React, { Component } from 'react'
import { Button, Form, FormGroup, FormControl, ControlLabel, Checkbox, Col } from 'react-bootstrap';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import { userAuthentication } from '../actions/userActions';
class LoginForm extends Component {
constructor(props) {
super(props)
this.state = {
email: '',
password: ''
}
this.onChange = this.onChange.bind(this);
this.onFormSubmit = this.onFormSubmit.bind(this);
}
onChange(e) {
this.setState({ [e.target.name]: e.target.value });
}
onFormSubmit(e) {
e.preventDefault();
this.props.userAuthentication(this.state)
}
render() {
//const { user, token } = this.props.userState;
const formInstance = (
<div>
{/*{token ? <p>{token}</p> : "null"}*/}
<Form horizontal onSubmit={this.onFormSubmit}>
<FormGroup controlId="formHorizontalEmail">
<Col componentClass={ControlLabel} sm={2}>
Email
</Col>
<Col sm={5}>
<FormControl type="email" name="email" onChange={this.onChange} value={this.state.email} placeholder="Email" />
</Col>
</FormGroup>
<FormGroup controlId="formHorizontalPassword">
<Col componentClass={ControlLabel} sm={2}>
Password
</Col>
<Col sm={5}>
<FormControl type="password" name="password" onChange={this.onChange} value={this.state.password} placeholder="Password" />
</Col>
</FormGroup>
<FormGroup>
<Col smOffset={2} sm={10}>
<Checkbox>Remember me</Checkbox>
</Col>
</FormGroup>
<FormGroup>
<Col smOffset={2} sm={10}>
<Button type="submit">
Sign in
</Button>
</Col>
</FormGroup>
</Form>
</div>
);
return (formInstance);
}
}
function mapDispatchToProps(dispatch) {
return bindActionCreators({ userAuthentication: userAuthentication }, dispatch)
}
export default connect(null, mapDispatchToProps)(LoginForm);
行動
import { WS_URL } from '../utill/types';
import axios from 'axios';
import { push } from 'react-router-redux'
export function userAuthentication(userData){
return function (dispatch) {
dispatch({type: 'USER_LOGIN'});
axios.post(WS_URL+'/authenticate',
userData,
{headers:{
'Access-Control-Allow-Origin': '*'
}}
)
.then(function (response){
dispatch({type: 'USER_LOGIN_COMPLETED', payload: response.data})
dispatch(push('/home'))
//push('/home')
})
.catch(function (error){
dispatch({type: 'USER_LOGIN_REJECTECTED', payload: error})
});
}
}
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from "react-redux"
import createHistory from 'history/createBrowserHistory'
import { Route } from 'react-router'
import { ConnectedRouter } from 'react-router-redux'
//import Routes from './js/utill/routes'
import registerServiceWorker from './registerServiceWorker';
import './css/index.css';
import store from "./store"
import App from './js/components/App';
import Home from './js/components/Home';
import LoginPage from './js/containers/LoginPage';
const history = createHistory()
ReactDOM.render(<Provider store={store}>
<ConnectedRouter history={history}>
<div>
<Route exact path="/" component={App}/>
<Route path="/login" component={LoginPage}/>
<Route path="/home" component={Home}/>
</div>
</ConnectedRouter>
</Provider>
, document.getElementById('root'));
registerServiceWorker();
個
store.js
import { applyMiddleware, createStore } from 'redux'
import logger from 'redux-logger'
import { routerMiddleware,routerReducer } from 'react-router-redux';
import thunk from "redux-thunk"
import reducers from './js/reducers'
import createHistory from 'history/createBrowserHistory'
import { combineReducers } from 'redux'
const history = createHistory()
const combinedReducers = combineReducers({
...reducers,
router: routerReducer
})
const middleware = applyMiddleware(logger , thunk, routerMiddleware(history));
export default createStore(combinedReducers, middleware)
依賴列表
"axios": "^0.16.2",
"history": "^4.6.2",
"react": "^15.6.0",
"react-bootstrap": "^0.31.0",
"react-dom": "^15.6.0",
"react-facebook-login": "^3.6.1",
"react-google-login": "^2.9.2",
"react-redux": "^5.0.5",
"react-router-redux": "^5.0.0-alpha.6",
"redux": "^3.6.0",
"redux-logger": "^3.0.6",
"redux-promise": "^0.5.3",
"redux-thunk": "^2.2.0"
有人能幫我爲什麼這個路由不工作,
你有'react-router-redux'的正確版本嗎?最新版本似乎是v4.1.1 [這裏](https://github.com/ReactTraining/react-router/tree/master/packages/react-router-reux) – stafamus
@stafamus是的,這似乎是最新的一個,當我安裝它指向這一點,我有同樣的問題,它似乎是 –