You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MobX与TypeScript时NavViews.test为undefined的问题求助

MobX + TypeScript中常量对象属性为undefined导致计算属性判断错误的问题

我编写了如下代码:

export const NavViews = {
    test: "test1",
    test2: "test2"
} as const;

接着实现了如下MainViewsStore类:

export class MainViewsStore {
     @computed
     get isLandingPage() {
        return this.primaryView === NavViews.test;
     }
}

当调用this._mainViewsStore.isLandingPage时,明明this.primaryView === NavViews.test应该成立,但结果却为false,且发现NavViews.test的值是undefined。我正在使用MobX和TypeScript,请问有人遇到过类似情况吗?


可能的原因及解决方法

  • 模块导入错误
    检查NavViews的导入语句,是否误用了默认导入而非命名导入。比如如果写成import NavViews from './xxx',但实际是命名导出export const NavViews,这会导致NavViews指向模块的默认导出(如果没有默认导出则为undefined),自然NavViews.test也会是undefined。确保导入语句是import { NavViews } from './xxx',和导出方式匹配。

  • 循环依赖问题
    如果MainViewsStore所在模块和NavViews所在模块存在互相导入的情况,可能会导致模块加载时NavViews还未完成初始化,出现属性为undefined的情况。解决办法是把NavViews这类常量抽离到一个独立的、无循环依赖的模块中,再让需要的模块去导入这个独立模块。

  • 状态初始化问题
    确认MainViewsStore中的primaryView是否正确初始化。虽然你提到NavViews.test是undefined,但也有可能是primaryView的赋值和预期不符,比如误赋值为'test'而非'test1',不过这个是次要排查点,优先解决NavViews的undefined问题。

内容的提问来源于stack exchange,提问作者Rue Vitale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 21:24:59