gpt4 book ai didi

javascript - 无法读取React中未定义的属性 'forEach'

转载 作者:行者123 更新时间:2023-12-03 13:24:45 24 4
gpt4 key购买 nike

我想用下一个代码来验证私有(private)路由:

import React from 'react';

import { Route, Redirect } from 'react-router-dom';
import routes from '../../routing/routes';

export default function PrivateRoute({ component: Component, ...rest }) {
// TODO: user verification
let user = 1;

const authComponentResolver = props => {
const authorizedComponent = <Component {...props} />
const redirectToAuthComponent = <Redirect to={{ pathname: routes.login.path, state: { from: props.location } }} />

if (user !== undefined) {
return authorizedComponent;
} else {
return redirectToAuthComponent;
}
}

return (
<Route {...rest} render={authComponentResolver} />
);
}

但它会引发下一个错误:

./src/components/auth/private-route.js
TypeError: Cannot read property 'forEach' of undefined

我不明白为什么,但下一个代码有效:

import React from 'react';

import { Route, Redirect } from 'react-router-dom';
import routes from '../../routing/routes';

export default function PrivateRoute(a) {
// TODO: user verification
let user = 1;

const authComponentResolver = props => {
const authorizedComponent = <a.component {...props} />
const redirectToAuthComponent = <Redirect to={{ pathname: routes.login.path, state: { from: props.location } }} />

if (user !== undefined) {
return authorizedComponent;
} else {
return redirectToAuthComponent;
}
}

return (
<Route {...a} render={authComponentResolver} />
);
}

有人可以解释一下为什么第一个版本无法编译吗?我认为这两个版本都做同样的事情。

这是我调用组件的方式:

const DashboardRoutes = () => (
<Switch>
<PrivateRoute exact path={routes.root.path} component={Dashboard} />
<PrivateRoute path={routes.dashboard.path} component={Dashboard} />

<PrivateRoute exact path={routes.persons.path} component={Persons} />
<PrivateRoute path={routes.personsNew.path} component={NewPerson} />

<PrivateRoute exact path={routes.branchOffice.path} component={BranchOffices} />
<PrivateRoute path={routes.personsNew.path} component={NewPerson} />

<PrivateRoute component={Error404} />
</Switch >
);

在控制台中我遇到此错误:

VM911 main.chunk.js:116 Uncaught Error: Module build failed (from ./node_modules/eslint-loader/dist/cjs.js):
TypeError: Cannot read property 'forEach' of undefined
at Linter.parseResults (Users/groupon/Proyectos/Uselessscat/reservas-client/node_modules/eslint-loader/dist/Linter.js:121)
at Linter.printOutput (Users/groupon/Proyectos/Uselessscat/reservas-client/node_modules/eslint-loader/dist/Linter.js:85)
at cache (Users/groupon/Proyectos/Uselessscat/reservas-client/node_modules/eslint-loader/dist/cacheLoader.js:46)
at Users/groupon/Proyectos/Uselessscat/reservas-client/node_modules/loader-fs-cache/index.js:122
at Gunzip.cb (Users/groupon/Proyectos/Uselessscat/reservas-client/node_modules/loader-fs-cache/index.js:47)
at Gunzip.zlibBufferOnEnd (zlib.js:131)
at Gunzip.emit (events.js:203)
at endReadableNT (_stream_readable.js:1145)
at process._tickCallback (internal/process/next_tick.js:63)
at Object../src/components/auth/private-route.js (VM911 main.chunk.js:116)
at __webpack_require__ (VM909 bundle.js:786)
at fn (VM909 bundle.js:151)
at Module../src/routing/module-router.js (VM911 main.chunk.js:1098)
at __webpack_require__ (VM909 bundle.js:786)
at fn (VM909 bundle.js:151)
at Module../src/routing/router.js (VM911 main.chunk.js:1226)
at __webpack_require__ (VM909 bundle.js:786)
at fn (VM909 bundle.js:151)
at Module../src/index.js (VM911 main.chunk.js:787)
at __webpack_require__ (VM909 bundle.js:786)
at fn (VM909 bundle.js:151)
at Object.0 (VM911 main.chunk.js:2552)
at __webpack_require__ (VM909 bundle.js:786)
at checkDeferredModules (VM909 bundle.js:46)
at Array.webpackJsonpCallback [as push] (VM909 bundle.js:33)
at VM911 main.chunk.js:1

但是无法辨认:(

谢谢。

最佳答案

如果您使用的是 react-scripts 版本 3.1.2 或任何高于 3.0.1 的版本,您可能需要降级到版本 3.0.1 因为它看起来工作正常。请参阅github issue

关于javascript - 无法读取React中未定义的属性 'forEach',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58161324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com