2016-04-03 6 views
0

コンポーネント "App"が作成されました。これは関数componentWillMountが定義されています(条件が偽の場合、反応ルータをリダイレクトする必要があります)。"if"がReactのcomponentWillMount()で動作しない場合

componentWillMount() { 
    const isLoggedIn = session.getLogin() 
    console.log('isLoggedIn is', isLoggedIn) 
    if (!isLoggedIn) { 
     console.log('now its false!') 
    } else { 
     console.log('else') 
    } 
    return false 
} 

しかし、コンソールには、次の出力:

isLoggedIn is false 
else 

私が何か間違ったことをやっていますか?私はisLoggedInがfalseに設定されていると思っていましたが、コンソールは「今度はその偽りです!」と言うべきですが、ではありません。ただ、注意すべき

- session.getLogin()return sessionstorage.getItem('sessionLoggedIn')

はanwsersいただきありがとうございますありません。

+0

あなたは本当に 'sessionstorage.getItem( 'sessionLoggedIn')'は文字列ではなくブール値を返しますか? – GillesC

+0

なぜ私はそれを考えなかったのですか?あなたは正しい、それはすべて働いている。愚かな質問を申し訳ありません:-) –

答えて

0

sessionStorageはすべてのエントリを文字列として保存します。したがって、そこから抜け出す値は実際には'false'です。だから、返された文字列が唯一の'true'であるかどうかを確認する必要があります。

componentWillMount() { 
    const isLoggedIn = session.getLogin() === 'true' 
    console.log('isLoggedIn is', isLoggedIn) 
    if (!isLoggedIn) { 
     console.log('now its false!') 
    } else { 
     console.log('else') 
    } 
    return false 
} 

これは実際にログイン機能である場合を除けば、それは非常に危険です。

+0

助けてくれてありがとう、私はそれが文字列であることを認識していませんでした。それはセキュリティで保護されていないと考えられている、それはちょうど内部のチェックです。 –

関連する問題