2016-12-07 56 views
0

嘿傢伙我有一個react-redux的問題。 我有一個頁面Login.js。當我點擊一個按鈕時,我正在調用changeSite函數。我嘗試了一種查看方式,但沒有成功。如果有人能幫助我,那會很棒。this.props.dispatch不是調用reducer

Login.js:

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import { Link } from 'react-router'; 
import { connect } from 'react-redux'; 

@connect((store) => { 
    return { 
    user: store.user.state.user, 
    registered: store.user.state.registered, 
    } 
}) 
export default class Login extends React.Component{ 

    handlePassword(e){ 

    } 

    handleUsername(e){ 

    } 

    changeSite(){ 
    this.props.dispatch({type: "CHANGE_REG", payload: !this.props.registered}); 
    console.log(this.props.registered); 
    } 

    login(){ 

    } 

    render(){ 
    console.log(this.props.registered); 
    if(this.props.registered === true){ 
     var loginPage = (
     <div> 
      <h2>Login</h2> 
      <p>Please login with your credentials</p> 
      <form> 
      <input placeholder="Username" type="text"/><br/> 
      <input placeholder="Password" type="password"/> 
      <p>You do not have an account yet?</p> 
      <input type="submit" value="register" onClick={this.changeSite.bind(this)}/> 
      </form> 

     </div> 
    ); 
    }else{ 
     var loginPage = (
     <div> 
      <h2>Register</h2> 
      <p>Please register with your credentials</p> 
      <form> 
      <input placeholder="Username" type="text"/><br/> 
      <input placeholder="Password" type="password"/><br/> 
      <input placeholder="repeat Password" type="password"/> 
      <p>You already have an account?</p> 
      <input type="submit" value="login"/> 
      </form> 

     </div> 
    ); 
    } 

    return(
     <div> 
     {loginPage} 
     </div> 
    ); 
    } 


} 

減速機:

export default function reducer(state={ 
    user:{ 
    id: null, 
    name: null, 
    password: null, 
    }, 
    registered: true, 
}, action){ 
    switch(action.type) { 
    case 'USER_LOGIN':{ 
     return { ...state, user: action.payload} 
    } 
    case 'CHANGE_REG':{ 
     return { ...state, registered: action.payload} 
    } 
    } 

    return {state} 
} 
+0

您是否將您的Login組件包裝在'Provider'組件中以展示商店? – hunterc

+0

是的,我其實沒有... – ITzBrotasco

+0

'的console.log(this.props.registered)'將返回一定的價值? – bntzio

回答

0

其實這是一個非常類似的解決方案: 我有我的狀態恢復爲對象而不是國家本身。 我改變了這一點:

。 。 return {state}; 。 。

與此:

。 。 返回狀態; 。 。

感謝您的支持

相關問題