当前位置:首页 > React

react 如何使用 mock

2026-03-31 10:55:25React

使用 Mock 数据在 React 中

在 React 项目中,Mock 数据常用于模拟后端 API 返回的数据,方便前端开发与测试。以下是几种常见的方法:

使用 json-server 创建 Mock API

安装 json-server 作为开发依赖:

npm install json-server --save-dev

创建一个 db.json 文件,用于存储 Mock 数据:

{
  "users": [
    { "id": 1, "name": "John Doe" },
    { "id": 2, "name": "Jane Smith" }
  ]
}

启动 json-server

json-server --watch db.json --port 3001

在 React 组件中调用 Mock API:

react 如何使用 mock

fetch('http://localhost:3001/users')
  .then(response => response.json())
  .then(data => console.log(data));

使用 msw (Mock Service Worker)

安装 msw

npm install msw --save-dev

创建 Mock 处理器(通常在 src/mocks/handlers.js):

import { rest } from 'msw';

export const handlers = [
  rest.get('/users', (req, res, ctx) => {
    return res(
      ctx.json([
        { id: 1, name: 'John Doe' },
        { id: 2, name: 'Jane Smith' }
      ])
    );
  })
];

设置 Mock 服务(在 src/mocks/browser.js):

react 如何使用 mock

import { setupWorker } from 'msw';
import { handlers } from './handlers';

export const worker = setupWorker(...handlers);

在应用入口文件(如 src/index.js)中启用 Mock:

if (process.env.NODE_ENV === 'development') {
  const { worker } = require('./mocks/browser');
  worker.start();
}

直接在组件中使用 Mock 数据

对于简单的场景,可以直接在组件中定义 Mock 数据:

const mockUsers = [
  { id: 1, name: 'John Doe' },
  { id: 2, name: 'Jane Smith' }
];

function UserList() {
  const [users, setUsers] = useState(mockUsers);
  return (
    <ul>
      {users.map(user => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
}

结合 Axios 拦截器

如果使用 Axios,可以通过拦截器返回 Mock 数据:

import axios from 'axios';

axios.interceptors.request.use(config => {
  if (config.url === '/users') {
    return Promise.resolve({
      data: [
        { id: 1, name: 'John Doe' },
        { id: 2, name: 'Jane Smith' }
      ]
    });
  }
  return config;
});

选择哪种方法取决于项目需求和复杂度。json-server 适合需要完整模拟 REST API 的场景,msw 提供了更灵活的拦截能力,而直接定义 Mock 数据则适用于简单用例。

分享给朋友:

相关文章

react native如何启动

react native如何启动

如何启动 React Native 项目 安装 Node.js 和 npm 确保已安装 Node.js(建议版本 16 或更高)和 npm(Node.js 自带)。可通过以下命令检查版本: node…

react中monent如何获取日期

react中monent如何获取日期

使用 Moment.js 获取当前日期 在 React 中通过 Moment.js 获取当前日期,可以直接调用 moment() 函数。它会返回包含当前日期和时间的 Moment 对象。 impor…

react如何读

react如何读

React 的发音 React 的发音为 /riˈækt/(音标),读作“瑞-艾克特”。其中: “Re” 发音类似英文单词 “read” 的开头部分。 “act” 发音与英文单词 “act” 一…

react如何debugger

react如何debugger

调试 React 应用的方法 使用浏览器开发者工具进行调试 React 开发者工具(React DevTools)是调试 React 应用的必备工具。安装 Chrome 或 Firefox 扩展后,可…

react如何减少setState

react如何减少setState

减少 React 中 setState 调用的方法 合并多次状态更新 使用函数式更新方式合并多次 setState 调用。React 会将多次状态更新批量处理,避免不必要的重新渲染。 // 非函…

react如何下载包

react如何下载包

使用 npm 安装 React 包 在项目目录下运行以下命令,通过 npm 安装 React 核心库和 React DOM: npm install react react-dom 使用 yarn…