Dva: 最外层父组件connect子组件都没有conect发现子组件里没有model 也没有dispath

Created on 19 Jan 2017  ·  4Comments  ·  Source: 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);

可以看出我的父组件App有connect过

而下面我的子组件Projects (path="projects")我没有connect

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;
  • 这样就导致了子组件拿不到dispath
  • 请问有什么方式能让子组件在不connect的情况下直接从父的已经connect的组件上拿到dispath呢
  • 因为我觉得父组件render之后子组件也会跟着render 只要子组件能够拿到dispath 能够通过dispath的方式改变state 触发父组件的渲染就好啊
  • 不然难道我每个routes下的文件都要connect一下么
question

Most helpful comment

难以阅读,请参考以下文档调整下格式:

All 4 comments

难以阅读,请参考以下文档调整下格式:

整理好了

我的方式是需要用 dispatch 或者引用 model state 的 component 都 connect 一下,当然你也可以把 dispatch 传下去,或者把 dispatch action 封装成一个 function,然后把 function 传下去。

我的方式是需要用 dispatch 或者引用 model state 的 component 都 connect 一下,当然你也可以把 dispatch 传下去,或者把 dispatch action 封装成一个 function,然后把 function 传下去。

如果都connect一下,就会导致国际化语言切换时,子组件不能正常切换,必须使用window.location.reload()刷新整个页面。但是如果子组件不connect的话,是可以正常切换的。有什么方法可以做到不刷新页面吗

Was this page helpful?
0 / 5 - 0 ratings