Reactjs 路由器分派器

Reactjs 路由器分派器,reactjs,redux,react-router,Reactjs,Redux,React Router,我有一个问题,我想在route render中我的组件之前分派我的操作(isLoading),但当我在OneNet事件中调用dispatch时,React给出错误: “警告:设置状态(…):无法在现有状态转换期间更新(例如在渲染或其他组件的构造函数中)。渲染方法应该是道具和状态的纯函数;构造函数的副作用是反模式,但可以移动到组件Willmount” 我知道这个错误是逻辑结果,因为我在组件渲染时改变了存储中的数据,我不能在componentDidMount中放入分派,因为在父组件路由中获取comp

我有一个问题,我想在route render中我的组件之前分派我的操作(isLoading),但当我在OneNet事件中调用dispatch时,React给出错误:

“警告:设置状态(…):无法在现有状态转换期间更新(例如在
渲染
或其他组件的构造函数中)。渲染方法应该是道具和状态的纯函数;构造函数的副作用是反模式,但可以移动到
组件Willmount

我知道这个错误是逻辑结果,因为我在组件渲染时改变了存储中的数据,我不能在componentDidMount中放入分派,因为在父组件路由中获取componentDidMount之前,先路由子级渲染(.Plsease help me),我需要很好的解决方案

我的代码: `

const-App=({location})=>{
返回(
{console.log(this)}
)
};

`

我认为您需要将分派封装在函数中,而不是像这样直接调用它(假设您使用的是ES6语法):


另外,请注意,在react router 4中,不再支持Onter属性,请参见。

thnx,但是当我在Onter中调用arrow func时,我的funct not called=(console.log('123')}/>我尝试将arrow func放入const变量中,并传入Onter
const dispatchLoading=()=>{console.log('123')};
我有相同的错误
警告:setState(…):无法在现有状态转换期间更新(例如在
render`或其他组件的构造函数中).Render方法应该是道具和状态的纯函数;构造函数的副作用是一种反模式,但可以移动到
组件willmount
`
const App = ({ location }) => {
  return (
        <div>
          {console.log(this)}
          <TransitionGroup className="transition-group">
            <CSSTransition
                key={location.key}
                timeout={0}
                classNames="fade"
            >
              <section className="route-section">
                <Switch location={location}>
                  <Route path="/" exact component={Index} onEnter= 
                       {store.dispatch(isLoading(true))}/>
                  <Route path="/news" exact component={News}/>
                  <Route path="/projects" exact component={Projects}/>
                  <Route path="/contacts" exact component={Contacts}/>
                  <Route path="/about"  exact component={About}/>
                </Switch>
              </section>
            </CSSTransition>
          </TransitionGroup>
        </div>
  )
};
onEnter={() => store.dispatch(isLoading(true))}