umijs max React 的代码打包多份再运行react找不到问题

mf-dep____vendor.80125e40.js:263462 Warning: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:

  1. You might have mismatching versions of React and the renderer (such as React DOM)
  2. You might be breaking the Rules of Hooks
  3. You might have more than one copy of React in the same app
    See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.

Uncaught TypeError: Cannot read properties of null (reading ‘useContext’)

根因在某些复杂场景下,React 的代码被打包多份,再运行时产出了多个 React 实例。解法通过 Module Feratation 的 shared 配置来避免多实例的出现。 如果有其他依赖出现多实例的问题,可以通过类似的方式解决。

在config/config.ts文件里加mfsu的配置

mfsu: {
  shared: {
    react: {
      singleton: true,
    },
  },
},

react project init

npm config set registry https://registry.npm.taobao.org --global
npm config set disturl https://npm.taobao.org/dist --global

npm install -g yarn react-native-cli

yarn config set registry https://registry.npm.taobao.org --global
yarn config set disturl https://npm.taobao.org/dist --global

npm install -g create-react-native-app

create-react-native-app MyApp

npm start

react

npm install -g create-react-app

create-react-app jinguan

brew install yarn

yarn add styled-components

yarn add redux

yarn add react-redux

yarn start