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