2016-09-08 6 views
1

私のReact + Reduxクライアントアプリケーションでは、アクティブなユーザー情報を取得する必要があります(myapp.com/users/meから取得します)。複数のコンポーネントからアクセスします。React + Reduxクライアントアプリケーションでアクティブなユーザーデータを保存する場所

私はwindow.activeUser = dataがベストプラクティスではないと思います。しかし、私はそれを実行するベストプラクティスについてのリソースを見つけることができませんでした。私がしたいことをするための最良の方法は何でしょうか?

答えて

3

別のレデューサーに保管してから、コンポーネント内にconnect()という状態の複数の部分をインポートすることができます。

users.jstags.jsという2つのレデューサーがあり、店舗を設定するときはcombineReducersと組み合わせているとします。ファンクションをconnect()呼び出しに渡すだけで、さまざまな部分を引き出すことができます。だから、ES6 +デコレータを使用して:その後、

const mapStateToProps = state => { 
    return {users: state.users, tags: state.tags} 
} 

@connect(mapStateToProps) 
export default class MyComponent extends React.Component { 

とあなたのrender機能でダウン:

return (
    <div> 
    <p>{this.props.users.activeUsernameOrWhatever}</p> 
    <p>{this.props.tags.activeTags.join('|')}</p> 
    </div> 
); 

だからあなたの異なる減速状態がthis.props上のオブジェクトになります。

2

を使用できリアクトのcontext、HOCまたは

何かのようなコンテキストを経由して複数のコンポーネントにデータを利用できるようにするグローバル変数、...

class ParentDataComponent extends React.Component { 
    // make data accessible for children 
    getChildContext() { 
    return { 
     data: "your-fetchet-data" 
    }; 
    } 

    render() { 
    return < Child /> 
    } 
} 

class Child extends React.Component { 
    render() { 
    // access data from Parent's context 
    return (<div> {this.context.data} </div>); 
    } 
} 
1

アクションの作成者が作成し、componentWillMount上でそれを呼び出しますコンポーネントがマウントされる直前に実行され、アクション作成者は必要なデータをフェッチしてレデューサーに渡します。その減速器では、アプリケーション全体で必要なデータを保持することができます。データが必要なときはいつでも還元状態から取り出すことができます。 this公式のreduxのウェブサイトからのチュートリアルは、あなたが知る必要があるすべてを網羅しています。何か質問がある場合は私に言及してください。

関連する問題