を反応させ、ディスパッチ(プッシュ)を行います:リダイレクトは、私は自分の行動で、この場所について行くのいくつかの方法を試してみたルータv3の
import LoginService from '../../services/login-service';
export const ActionTypes = {
SET_LOGIN: 'SET_LOGIN',
}
export function getLogin(data, dispatch) {
LoginService.getLoginInfo(data).then((response) => {
const login = response.data;
dispatch({
type: ActionTypes.SET_LOGIN,
login
})
// .then((res) => {
// dispatch(push('/'));
// })
})
}
私もレンダリングを使用してについて何かを見ました反応ルータのルート上のプロパティ。
今、私は私の状態が真か偽であるかどうかに基づいてrenderIfを使用しようとしていますが、私は正常にこのページの小道具を取得するように見えることはできません。ここで
import React from 'react';
import renderIf from 'render-if';
import { Redirect } from 'react-router-dom';
import LoginHeader from '../../components/header/login-header';
import LoginPage from './login-page';
const LoginHome = props => (
<div>
{console.log(props)}
{renderIf(props.loginReducer.status === false)(
<div>
<LoginHeader />
<LoginPage />}
</div>)}
{renderIf(props.loginReducer.status === true)(
<Redirect to="/" />,
)}
</div>
);
export default LoginHome;
はloginPageは次のとおりです。
import React from 'react';
import { form, FieldGroup, FormGroup, Checkbox, Button } from 'react-bootstrap';
import { Field, reduxForm, formValueSelector } from 'redux-form';
import { connect } from 'react-redux';
import { getLogin } from './login-actions';
import LoginForm from './form';
import logoSrc from '../../assets/images/logo/K.png';
import './login.scss'
class LoginPage extends React.Component {
constructor(props) {
super(props);
this.state = {
passwordVisible: false,
}
this.handleSubmit= this.handleSubmit.bind(this);
this.togglePasswordVisibility= this.togglePasswordVisibility.bind(this);
}
togglePasswordVisibility() {
this.setState((prevState) => {
if (prevState.passwordVisible === false) {
return { passwordVisible: prevState.passwordVisible = true }
}
else if (prevState.passwordVisible === true) {
return { passwordVisible: prevState.passwordVisible = false }
}
})
}
handleSubmit(values) {
this.props.onSubmit(values)
}
render() {
return (
<div id="background">
<div className="form-wrapper">
<img
className="formLogo"
src={logoSrc}
alt="K"/>
<LoginForm onSubmit={this.handleSubmit} passwordVisible={this.state.passwordVisible}
togglePasswordVisibility={this.togglePasswordVisibility}/>
</div>
</div>
)
}
}
function mapStateToProps(state) {
return {
loginReducer: state.loginReducer,
};
}
function mapDispatchToProps(dispatch) {
return {
onSubmit: (data) => {
getLogin(data, dispatch);
},
};
}
export default connect (mapStateToProps, mapDispatchToProps)(LoginPage);
何かが
私は次の変更をしたが、私にgetlogin機能でも、第三引数の履歴を追加した後、私の第二then'に定義されていません'' LoginServiceを '../../services/login-service'からインポートします。 エクスポートCONST ActionTypes = { SET_LOGIN 'SET_LOGIN' }エクスポート機能にgetlogin(データ、発信履歴){ LoginService.getLoginInfo(データ).then((応答)=> { CONSTログイン=応答.DATA; ディスパッチ({ タイプ:ActionTypes.SET_LOGIN、 ログイン}) }) .then((RES)=> { history.push( '/'); }) } '' ' –
悲しいことに未だ定義されていない:(もし私がそれを把握すれば、私はLoginHomeもrenderIfを含まないように変更した –