Javascript Console.log()有一个值,但当我将它与map函数一起使用时,它变得未定义[ReactJS]
我是个新来的人Javascript Console.log()有一个值,但当我将它与map函数一起使用时,它变得未定义[ReactJS],javascript,reactjs,Javascript,Reactjs,我是个新来的人 您能帮助我吗,请正如错误所暗示的,此.state.allowedRoutes在记录值后或在后续渲染中未定义。您也应该发布您的代码。 但是对于工作区,您可以使用this.state.allowedRouter&&this.state.allowedRoutes.map()检查是否undefined 作为旁注,显然您在render方法中更新状态,这也是不正确的。很可能在某个时候您正在更新状态,并且错误地删除了允许的路由。如果您先在没有设置状态的情况下设置状态,所有以前的数据都将被删除
您能帮助我吗,请正如错误所暗示的,
此.state.allowedRoutes
在记录值后或在后续渲染中未定义。您也应该发布您的代码。但是对于工作区,您可以使用
this.state.allowedRouter&&this.state.allowedRoutes.map()检查是否undefined
作为旁注,显然您在render方法中更新状态,这也是不正确的。很可能在某个时候您正在更新状态,并且错误地删除了允许的路由。如果您先在没有设置状态的情况下设置状态,所有以前的数据都将被删除,例如:
// WRONG - STATE BECOMES { allowedRoutes: myArray }
this.setState({
allowedRoutes: myArray
});
// RIGHT - STATE BECOMES { all previous properties plus allowedRoutes: myArray }
this.setState({
...this.state,
allowedRoutes: myArray
});
如果要在不首先检查值的情况下使用map
(map
是一种数组方法),请确保将allowedRoutes初始化为空数组
如果您正在使用类:
constructor(props) {
super(props);
this.state = {allowedRoutes: []};
}
如果您正在使用挂钩:
const [allowedRoutes, setAllowedRoutes] = useState([]);
您的图片显示异常是在.map
中引发的:
this.state.allowedRoutes.map(
// the exception was thrown here
...
)
请注意,在这一行,您可以看到当前范围中未定义所有路由
component={allRoutes[route.component]}
请改为{this.state.allowedRoutes&&this.state.allowedRoutes.map..}
。您得到的确切错误是什么?@VLAZ它在上面。“我如何问一个好问题?”->“不要张贴代码、数据、错误消息等的图像-复制或在问题中键入文本。请保留在图表或演示渲染错误时使用图像,这是无法通过文本准确描述的。“为什么您认为他正在更新render方法中的状态?因为他在控制台中有一个错误,说明在现有状态转换期间,无法更新