我有这个功能:
buildRoute(listRoutes) {
return (
listRoutes.map((prop, key) => {
if (prop.subMenus != null) {
if (prop.path !== undefined) {
if(prop.redirect || this.state.listMenuActionsUser.includes(prop.code)){
return [
this.routes(prop, key),
this.buildRoute(prop.subMenus)
];
}
} else {
if(prop.redirect || this.state.listMenuActionsUser.includes(prop.code)){
return this.buildRoute(prop.subMenus);
}
}
} else {
if(prop.redirect || this.state.listMenuActionsUser.includes(prop.code)){
return this.routes(prop, key);
}
}
})
);
}
在每次调用函数route和buildRoute之前,我想通过更新列表来更改状态。可能吗?如果是,怎么办?
答案 0 :(得分:0)
我不确定我是否理解你的问题。您能详细说明一下吗? (您指的是哪个状态更改,按列表的意思是listRoutes吗?) 如果您要更改状态而不是状态,那么可以通过this.setState({list:values})来完成,我假设您已经知道了,这不是问题。
答案 1 :(得分:0)
如果我使用setState,那么我会陷入无限循环
buildRoute(listRoutes) {
console.log("Je passe là")
return (
listRoutes.map((prop, key) => {
if (prop.subMenus != null) {
if (prop.path !== undefined) {
if(prop.redirect || this.state.listMenuActionsUser.includes(prop.code)){
this.setState(previousState => ({
listRoutesUser: [...previousState.listRoutesUser, prop]
}));
return [
this.routes(prop, key),
this.buildRoute(prop.subMenus)
];
}
} else {
if(prop.redirect || this.state.listMenuActionsUser.includes(prop.code)){
this.setState(previousState => ({
listRoutesUser: [...previousState.listRoutesUser, prop]
}));
return this.buildRoute(prop.subMenus);
}
}
} else {
if(prop.redirect || this.state.listMenuActionsUser.includes(prop.code)){
this.setState(previousState => ({
listRoutesUser: [...previousState.listRoutesUser, prop]
}));
return this.routes(prop, key);
}
}
})
);
}
已超过最大更新深度。当组件重复调用componentWillUpdate或componentDidUpdate内部的setState时,可能会发生这种情况。 React限制了嵌套更新的数量,以防止无限循环。