有多个 mobx 实例处于活动状态

Luc*_*ias 0 reactjs react-native mobx mobx-react

自从 Mobx 3.6 上次更新到 Mobx 4 以来,我的应用程序就停止工作了。我正在使用react-native,并且只是按照说明迁移到最新功能,但我的应用程序不断崩溃,显示以下错误:

[mobx] 有多个活动的 mobx 实例。这可能会导致意外结果:有关详细信息,请参阅https://github.com/mobxjs/mobx/issues/1082

点击这里查看错误图片

Mobx 商店:

我刚刚创建了一个简单的可观察对象,代码如下:

import React, { Component } from "react";

import { observable } from "mobx";

const ProductsStore = observable.object(
  {
    selectedProduct: null,
    products: [
      {
        id: 1,
        name: "NVIDIA 1050TI",
        desc: "4GB OC",
        model: "ASUS",
        price: 1050,
        quantity: 1
      },
      {
        id: 2,
        name: "NVIDIA 1060TI",
        desc: "6GB OC",
        model: "EVGA",
        price: 1050,
        quantity: 1
      },
      {
        id: 3,
        name: "NVIDIA 1070TI",
        desc: "8GB OC",
        model: "MSI",
        price: 1050,
        quantity: 1
      },
      {
        id: 4,
        name: "NVIDIA 1080TI",
        desc: "11GB OC",
        model: "FOUNDERS EDITION",
        price: 1050,
        quantity: 1
      }
    ]
  },
  { selectedProduct: observable, products: observable }
);

export { ProductsStore };
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试导入此文件时,它会使应用程序崩溃,并显示我之前提到的错误。

import { ProductsStore } from '@store'
Run Code Online (Sandbox Code Playgroud)

我尝试过不使用别名,但似乎不起作用。

Luc*_*ias 5

我在与 @mweststrate 聊天时解决了这个问题,并发现在我的项目中,我使用的库依赖于旧版本的 mobx。

版本 > 3.6,仅接受一个 mobx 实例。

该库react-native-router-flux使用的是旧版本,这是导致此问题的原因。

解决方法是将resolutions属性添加到package.json文件中并将mobx和添加mobx-react到此属性。

  "resolutions": {
    "mobx": "^4.1.0",
    "mobx-react": "^5.0.0"
  },
Run Code Online (Sandbox Code Playgroud)

但该resolutions属性仅适用yarn不适用于 npm。此属性会覆盖旧的引用依赖项。有关更多问题,请阅读文档。

纱线的选择性分辨率

应用程序中的多个 MobX 实例 #1082