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方法中的状态?因为他在控制台中有一个错误,说明在现有状态转换期间,
无法更新