2017-11-12 15 views
-1

コンポーネントに適切なコンテンツを表示する際に問題が発生しました。コンポーネントは必要なすべてのストアと小道具にアクセスできますが、これを確認するためにconsole.logが表示されますが、コンテンツのレンダリングに失敗します。条件付きレンダリングの問題(ReactJS)

Iセットアップような店舗:

const levelDefaultState = { 
level: "second"} 

そして、私は現在の状態に応じて物事をレンダリングしたい私のコンポーネントは次のようになります。

import React from 'react'; 
import { connect } from 'react-redux' 
import LevelTwo from './level2/level2' 

class LevelRenderer extends React.Component { 

renderLevel(){ 
    let currentLevel = null; 
    if (this.props.level === "second") { 
     currentLevel = <LevelTwo level={this.props.level} /> 
    } else { 
     currentLevel = 'No level' 
    } 

    return currentLevel; 
} 

render() { 
    console.log('store', this.props.level) 


    let renderLevelConst = (this.props.level) ? this.renderLevel() : notRendered() 

    function notRendered() { 
     return 'Not rendered yet' 
    } 

    return (
     <div> 
      {renderLevelConst} 
     </div> 
    ) 
} 
} 

const mapStateToProps = (state) => { 
    return { 
     level: state.level 
    } 
} 

export default connect(mapStateToProps)(LevelRenderer); 

そして、状態が「あるにもかかわらず、それがレンダリングするすべての時間は「レベルなし」の文字列です。最初の状態を「最初に」設定してから、setTimeoutで「秒」に変更しようとしましたが、何も変更はありません。

私は間違っていますか?

+0

let currentLevel = nullの後にconsole.log(this.props.level)を返すと何が返されますか? ? – bee

+0

これは2回印刷されます: "store {level:" second "、sublevel:" 1.splash "}" –

+0

を試してみてください:renderLevelのif(this.props.level.level === "second"){} – bee

答えて

0

試行:

IF(this.props.level.level === "第二"){} renderLevel

でthis.props.level = {レベルが "第二"、下位。 "1.splash"}では、this.props.level.levelを呼び出してレベル値を取得する必要があります。

関連する問題