2016-04-18 12 views
1

observable-react-projectをReduxに変換します。私は、メインの容器を持っている - App.jsとは、彼は次のメソッドが含ま:最初のスタートアプリのshowPLockでコンポーネントへの最初の呼び出し時にmapStateToPropsが呼び出されない

handleDone() { 
    this.setState({ showPLock: false }); 
} 

render() { 
    return (
     <div className="mainContainer"> 
      {this.props.children} 
      { 
       this.state.showPLock 
        ? <PCode handleDone={this.handleDone.bind(this)}/> 
        : null 
      } 
     </div> 
    ); 
} 

:真を。 コードPコード:

class PCode extends Component{ 
constructor (props) { 
    super(props); 

    this.state = { 
     passcode: '' 
    }; 
} 

render() { 
    //something doing 
} 
} 

PCode.contextTypes = { 
    router: PropTypes.object.isRequired, 
    store: PropTypes.object.isRequired 
}; 

PCode.propTypes = { 
    dispatch: PropTypes.func.isRequired, 
}; 

function mapStateToProps(stateStore) { 
    const { authReducer } = stateStore; 
    if (authReducer.pcode !== null) { 
     //something return 
    } 
} 

export default connect(mapStateToProps)(PCode); 

コールmapStateToProps問題。彼は、コンポーネントのヒット直後に呼び出されません。したがって、レンダリングで何かを呼び出すと、たとえば:

const { data } = this.props; 

もちろん、未定義が発行されます。

mapStateToPropsがコンポーネントへの最初の呼び出しで呼び出されないのはなぜですか?

答えて

1

はい、mapStateToPropsは、コンポーネントの最初のマウント時に実行する必要があります。チェックする

2つのこと:

  • あなたは関数が呼び出されていませんか?私がしようとしているclass PCode extends React.Component {}
+0

1)関数は、呼び出しがApp.js 2 mapStateCalled後、呼ばれるmapStateCalled)は、すべての権利 – ximet

+0

@ximetをチェックし、あなたの問題が解決されますか? – mtaube

+0

あなたの2つの問題は私の問題を解決しません – ximet

-2

:あなたはPCodeクラスはおそらくReact.Componentを拡張する必要があり、それは単に空{}

  • 場合でも、mapStateToPropsからオブジェクトを返すことを確認してください。私はこの質問を簡素化するために、React.Componentを拡張しています...このチェックの問題ではありません!

    Pコードで
  • 関連する問題