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

无法安装npm时,如何通过CDN在React中使用状态管理库

CDN环境下使用React状态管理库(以MobX为例)的入门指引

浏览器不支持Node.js的require语法,也无法直接使用ES模块的import(除非配置type="module"且对应CDN资源支持),所以通过CDN引入的库会将API挂载到全局变量上,你需要通过这些全局变量调用库的功能,具体步骤如下:

1. 按顺序引入CDN资源

先引入React、ReactDOM,再引入MobX相关库,确保依赖顺序正确:

<!-- React和ReactDOM -->
<script src="https://cdn.jsdelivr.net/npm/react@18/umd/react.production.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/react-dom@18/umd/react-dom.production.min.js"></script>
<!-- MobX核心库 -->
<script src="https://cdn.jsdelivr.net/npm/mobx@6/dist/mobx.umd.min.js"></script>
<!-- MobX-React Lite(轻量版,适配函数组件) -->
<script src="https://cdn.jsdelivr.net/npm/mobx-react-lite@3/dist/mobxreactlite.umd.min.js"></script>

引入后,MobX的API挂载到全局mobx对象,MobX-React Lite的API挂载到mobxReactLite对象。

2. 创建可观察状态

使用全局mobx对象的observable方法定义状态:

// 定义全局状态存储
const countStore = mobx.observable({
  count: 0,
  // 定义修改状态的方法
  increment() {
    this.count += 1;
  },
  decrement() {
    this.count -= 1;
  }
});

3. 用observer包裹React组件

只有被observer包裹的组件,才能响应状态变化:

// 创建响应式组件
const Counter = mobxReactLite.observer(() => {
  // CDN环境下需用React.createElement创建元素(若要用JSX,需额外引入Babel CDN并设置script标签type为text/babel)
  return React.createElement('div', null, [
    React.createElement('h3', null, '计数器'),
    React.createElement('p', null, `当前数值:${countStore.count}`),
    React.createElement('button', { onClick: () => countStore.increment() }, '+1'),
    React.createElement('button', { onClick: () => countStore.decrement() }, '-1')
  ]);
});

4. 渲染组件到DOM

和普通React CDN用法一致:

const rootDom = document.getElementById('root');
const root = ReactDOM.createRoot(rootDom);
root.render(React.createElement(Counter));

错误原因说明

你之前遇到的Uncaught ReferenceError: require is not defined,是因为require是Node.js专属的CommonJS模块语法,浏览器环境中不存在这个函数;而ES模块的import语法需要浏览器支持ES模块,且CDN资源必须提供ES模块版本,同时script标签要设置type="module"。直接使用CDN库暴露的全局变量,是当前环境下最稳妥的方案。

内容的提问来源于stack exchange,提问作者Junky Man

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:50:55