【发布时间】:2021-12-04 00:07:43
【问题描述】:
我正在尝试将我的路由文件组织成多个文件,但由于尚未声明,因此无法访问主文件中声明的“枚举”对象。
在下面的示例中,我收到错误 ReferenceError: Cannot access 'MenuItem' before initialization。
我觉得奇怪的是函数 (createRoute) 不会导致同样的错误,所以它确实在 routesSettings 文件调用它之前被声明了。
有什么技巧可以让我保持我想要的结构吗?
routes.js
import Home from "../pages/Home";
import Settings from "../pages/settings";
import { routesSettings } from "./routesSettings"
export const MenuItem = Object.freeze({
HOME: "Home",
SETTINGS: "Settings",
});
export const routes = [
// Home
createRoute(MenuItem.HOME, "/", Home),
// Settings
createRoute(MenuItem.SETTINGS, "/", SETTINGS),
...routesSettings,
]
export function createRoute(name, route, component) {
return { name, route, component };
}
routesSettings.js
import PasswordSettings from "../pages/settings/password";
import UserSettings from "../pages/settings/user";
import { createRoute, MenuItem } from "./routes"
export const routesSettings = [
createRoute(MenuItem.SETTINGS_PASSWORD, "/settings/password", PasswordSettings),
createRoute(MenuItem.SETTINGS_USER, "/settings/password", UserSettings),
];
【问题讨论】:
-
把
MenuItem放到它自己的文件里,然后在这里导入到你的文件里
标签: javascript reactjs ecmascript-6