2016-08-28 11 views
1

編集が反応/ Reduxのアプリ実は

でページビューを登録するにはどのように、私は自分の行動の作成者は、アクションとアクションの最初のプロパティを返さないので、これは想定されていることをかなり確信していますしたがって、未定義です...

カスタムアナリティクスエンジン(つまり、Googleアナリティクスではない)でページビューを登録したいReact/Redux SPAがあります。私はページビューを登録しようとしています。

だから私はReduxのアクションを発射に反応してライフサイクルフックを設定することにより、これを行うことを試みてきた:

class ConfirmationPage extends Component { 
    ... 
    componentWillMount() { 
    this.props.registerPageVisited('confirmation'); 
    } 
} 

私は小道具を経由して状態を変更していますので、しかし、私はおそらくCannot read property 'type' of undefinedエラーが表示されます。スタックトレースを見ると、それは私にそのフックをもたらします。しかし、私はcomponentDidMountcomponentWillUnMountのような他のフックを試しましたが、同じエラーが出ます。コンテキストの場合

、自分の行動の作成者はこれです:DBはfirebase参照です

export function registerPageVisited(page) { 
    DB.child('visits') 
    .child(store.getState().visit) 
    .update({ [page]: true }); 
} 

ページビューをどのように追跡する必要がありますか?

答えて

0

ConfirmationPageコンポーネントをインスタンス化するコードを提供できますか?あなたが実際のようになるはず小道具として渡されるべきregisterPageVisited関数を呼び出している何をしているかcomponentWillMount機能で

:あなたのregisterPageVisited以来<ComponentPage registerPageVisited={registerPageVisited} />

あなたが疑っているように、アクションオブジェクトを返しません。そうではありませんアクションクリエイター。アクションクリエーターにする場合は、mapDispatchToProps関数を使用して、他のどのような小道具もあなたの例ではsenと同じように使用する必要があります。

+0

ディスパッチ機能にはマップ状態があります。私はそれを文脈として提供すべきだった。問題は、アクションクリエイターからアクションを返さないことに終わった。 – user3162553

0

これとは別のオブジェクトが、ストアからの通知を聞き取り、表示されている変更に基づいてDBを更新します。これにより、ビュー階層からメトリックコレクションが分離されます。

どのReactコンポーネントがそのオブジェクトに表示されているかを決定するロジックを複製する必要がありますが、別のクラスに取り込んで両方の場所で使用することができます。

反応ルータを使用している場合、アクティブなルートが変更されたときに起動するフックが存在する可能性があります。しかし、私はそれを調べていません。

+0

これは正しいアプローチだと思います。私は永続的な店舗とreduxを接続することについてはあまり見ていないが、私はそれが次にやることだと思う。ありがとう – user3162553

関連する問題