Dva: 最も外側の親コンポーネント、接続コンポーネント、および子コンポーネントの接続はなく、子にはモデルやディスパスはありません。

作成日 2017年01月19日  ·  4コメント  ·  ソース: dvajs/dva

私のシーンはこんな感じです

私はrouter.jsxをこのように設計しました

            <Router history={ history }>

                <Route path="/" getComponents={App}>
                    <IndexRedirect to="projects" />
                    <Route path="projects" getComponents={Projects}></Route>
                    <Route path="dashboard" getComponents={Dashboard}></Route>
                </Route>
                <Route path="*">
                </Route>
            </Router>

最も外側のpath = "/"を持つApp.jsxは、次のように設計されています

import React, {PropTypes, Component} from 'react';
import {connect} from 'dva';
import {Link} from 'dva/router';
import Header from 'components/Common/ProjectManagementNav/ProjectManagementNav'

const App = (props) => {
    console.log("props",props);
    return  (
        <div>
            <Header />
            {props.children}
        </div>
    )
}

function mapStateToProps({ management }) {
    return { management };
}

export default connect(mapStateToProps)(App);

親コンポーネントのアプリが接続されていることがわかります

そして私のサブコンポーネントプロジェクト(path = "projects")の下で私は接続しません

import React from 'react';
import {connect} from 'dva';
import ProjectsContent from 'components/projects/projectsContent';
const Projects = (props) => {
    console.log(props);
    return (
        <ProjectsContent/>
    );

};

export default Projects;
  • これにより、サブコンポーネントはディスパスを取得しません
  • 子コンポーネントが、接続せずに親の接続されたコンポーネントから直接切断する方法はありますか?
  • 親コンポーネントがレンダリングされた後、子コンポーネントもレンダリングに従うと思うので、子コンポーネントがディスパスを取得できる限り、ディスパスによって状態を変更して、親コンポーネントのレンダリングをトリガーできます。
  • それ以外の場合は、各ルートでファイルに接続する必要がありますか?
question

最も参考になるコメント

読みにくい場合は、以下の資料を参照してフォーマットを調整してください。

全てのコメント4件

読みにくい場合は、以下の資料を参照してフォーマットを調整してください。

整理しました

私の方法は、ディスパッチまたはモデルの状態を参照するすべてのコンポーネントを使用して接続することです。もちろん、ディスパッチを渡すか、ディスパッチアクションを関数にカプセル化してから、関数を渡すこともできます。

私の方法は、ディスパッチまたはモデルの状態を参照するすべてのコンポーネントを使用して接続することです。もちろん、ディスパッチを渡すか、ディスパッチアクションを関数にカプセル化してから、関数を渡すこともできます。

それらすべてを接続すると、国際言語を切り替えるときにサブコンポーネントが正常に切り替わらないため、window.location.reload()を使用してページ全体を更新する必要があります。ただし、子コンポーネントが接続されていない場合は、正常に切り替えることができます。ページを更新しない方法はありますか?

このページは役に立ちましたか?
0 / 5 - 0 評価