node-horseman
を使用してGoogleにログインし、GoogleアラートのUIを操作してRSSフィードを作成するコンポーネントがあります。私のプロジェクトでは、ユーザーがモジュールによって生成されたcookies.txt
ファイルを持っているかどうかを確認し、Googleにログインする必要があるのか、すでにRSSフィードを作成できるのかを確認します。真でなければならない場合、ブール値はFALSEです
フォームをレンダリングするための責任が私のコンポーネント:
import React, { Component, PropTypes } from 'react'
import NewRSSForm from './NewRSSForm'
import LoginForm from './LoginForm'
class GoogleAlerts extends Component {
render() {
const {
hasCookies,
createRSSFeed,
createRSSFeedSuccess,
loginGoogle,
loginGoogleSuccess
} = this.props
return (
<div>
{
hasCookies
? <NewRSSForm
createRSSFeed={createRSSFeed}
createRSSFeedSuccess={createRSSFeedSuccess}
/>
: <LoginForm
loginGoogle={loginGoogle}
loginGoogleSuccess={loginGoogleSuccess}
/>
}
</div>
)
}
}
GoogleAlerts.propTypes = {
hasCookies: PropTypes.bool,
createRSSFeed: PropTypes.func,
createRSSFeedSuccess: PropTypes.bool,
loginGoogle: PropTypes.func,
loginGoogleSuccess: PropTypes.bool,
}
export default GoogleAlerts
シンプルで使いやすいです。エンドポイントは、ファイルが存在するフォルダの名前であるユーザid
のファイルの存在をチェックし、true
またはfalse
のいずれかを返します。
* hasCookies() {
return fs.existsSync(User.cookiesLocation(this.id))
}
クッキーから保存され、読まれなければならない場所のデフォルトのパスを返す静的メソッドがあるUser
モデル:返された値をチェックすることによって
static cookiesLocation(userID) {
return `cookies/${userID}/cookies.txt`
}
は、私はそれがだはっきりと見ることができます正しいかどうかはファイルがあるかどうかの両方の条件ですが、奇妙なことに、false
の場合、コンポーネントはtrue
のときに表示されると思われるフォームを表示しています。私はconsole.log
でテストしましたが、それも正しいですが、どういうわけか間違った結果を表示することを主張しています。
申し訳ありませんが、私は間違いを見ませんでした。 'hasCookies'は' boolean'であると考えられます。 – mfgabriel92
'hasCookies'は関数ですか? – Pineda
それはAPIです。 Reduxはルートにアクセスするときにこの関数を実行し、その戻り値をチェックします。私は問題を見つけた、それに答える – mfgabriel92