首页 > 其他分享 >react+mock

react+mock

时间:2023-05-23 14:13:29浏览次数:44  
标签:axios react webpack import 数据 mock

之前写过一篇react项目添加mock的文章,在文章中说的mock代码是打包配置的时候写入的,这种方式导致每次修改mock数据后都需要重新启动服务才能获取到新的mock数据。

今天使用另外一种方式来实现开发过程中的数据mock。

在项目中安装 axios和mock.js两个框架

然后在webpack配置文件中配置一个环境变量 REACT_APP_MOCK='true',这个环境变量的目的是为了在业务代码中使用,只有匹配了才使用mock数据,否则使用mock数据。

1、如何添加环境变量

2、新建 src/mocks/apis/hooks.js 文件存放mock数据,文件内容:

import Mock from 'better-mock'

export function hookMock(){
    Mock.mock('/mock/api/hook', {
        success: '@boolean(1, 9, false)',
        errorCode: '@integer(0, 10)',
        message: '@cword(2,10)',
        data: {
            a: '样',
            userName: '@cword(2,4)',
            userId: '@integer(1000, 9999)',
            'list|1-10': [{
                'id|+1': 1,
                'email': '@EMAIL'
            }]
        },
    })
}

 

2、代码中使用mock数据

import React, {useState, useEffect} from 'react'

import axios from 'axios'
import {hookMock} from '@/mocks/apis/hooks'

if(process.env.REACT_APP_MOCK === 'true'){
    hookMock();
}

function Hooks(props){     // 使用一个普通变量存储值,在事件里面获取到的一定不是你想要的值,因为,每次渲染都会重新声明
    useEffect(() => {
        console.log('发起请求---')
        axios.get('/mock/api/hook').then((res)=>{
            console.log('res:', res)
        })
    }, []);
    return <>
mock数据 </> } export default Hooks;

其中的 @ 是webpack配置的 src目录的别名

 

使用webpack配置实现的mock和业务中引入mock的差别:

1、webpack配置实现的mock每次修改后,都需要重新启动,才能获取到新的数据,而业务中引入的mock则不需要。

2、webpack配置实现的mock会发出ajax请求,而业务中引入的mock不会发起请求。

标签:axios,react,webpack,import,数据,mock
From: https://www.cnblogs.com/ayseeing/p/17425021.html

相关文章

  • react项目在不暴露配置文件的情况下配置环境变量
    react项目在不暴露配置文件的情况下修改打包配置需要用到 react-app-rewired和customize-cra包对打包配置文件进行修改。 添加自定义环境变量有两种方法:方法1:使用dotenv-cli1、运行 yarnglobaladddotenv-cli 全局安装dotenv-cli2、在根目录下添加.env.pre文件,写入变......
  • React笔记-Hooks(九)(非常全面)
    React笔记-Hooks(九)Hooks概念ReactHooks的意思是组件尽量写成纯函数如果需要外部功能和副作用就用钩子把外部代码"钩"进来函数组件和类组件区别函数组件没有状态(state)类组件有函数组件没有生命周期类组件有(挂载-更新-销毁)函数组件没有this类组件有函数组......
  • 扩展可能性:发挥React Native与小程序集成的优势
    ReactNative是一个强大的前端跨端框架,可以帮助开发者高效地构建移动应用程序,并充分利用跨平台开发的优势,同时提供接近原生应用程序的性能和用户体验。它具有许多技术上的优势:跨平台开发:使用ReactNative,您可以使用相同的代码库构建同时运行在iOS和Android平台上的应用程序。......
  • [React Typescript] Overriding and Removing Component Props
    UsingOmitimport{ComponentProps}from'react';import{Equal,Expect}from'../helpers/type-utils';exportconstInput=(props:Omit<ComponentProps<'input'>,'onChange'>&{onChange:......
  • [React Typescript] Useful React Prop Type Examples
    RelevantforcomponentsthatacceptotherReactcomponentsasprops.exportdeclareinterfaceAppProps{children?:React.ReactNode;//best,acceptseverythingReactcanrenderchildrenElement:JSX.Element;//AsingleReactelementstyle?:React.C......
  • 【Swift开发】混合开发-React Native集成到原生iOS项目
    一、场景描述针对目前项目需求,部分功能需要动态热部署,因此考虑使用ReactNative。下面有个Demo介绍原生iOS项目是如何与ReactNative集成的。先贴下ReactNative中文网是官方教程:ReactNative嵌入到现有原生应用。对老项目来说,官方推荐使用第三方包管理器CoCoaPods来自动集成,但是考......
  • 【React工作记录五十八】函数方式渲染页面
     前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语项目中添加按钮的两种方式编辑核心实现代码......
  • 【React工作记录五十九】根据key值过滤形成新得数组
     目录前言导语 核心实现代码运行结果前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语根据key......
  • react-create-app 创建的项目添加保存自动格式化
    前言首先,react-create-app创建的项目是自带安装eslint的,所以我们要安装prettier及相关插件参考=>https://juejin.cn/post/6844903901544742925安装的包这些都是开发时依赖,注意安装位置eslint-config-react-app打开modules文件,可以看到是已经预安装的,无需重复......
  • React 入门实例教程
    现在最热门的前端框架,毫无疑问是 React 。上周,基于React的 ReactNative 发布,结果一天之内,就获得了5000颗星,受瞩目程度可见一斑。React起源于Facebook的内部项目,因为该公司对市场上所有 JavaScriptMVC框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站。做出......