在react中使用mock模拟后端接口

第一步:引入mockjs

运行命令安装

cnpm i mockjs --save

第二步:建立mock文件

1.在src下新建mock文件夹,并在文件下新建js文件,在这个文件里进行接口模拟
在这里插入图片描述
2.在mockData.js中引入mockjs,并写模拟的返回数据,第一个参数是接口,第二个是请求类型,第三个是一个函数,接收请求参数并处理之后返回数据。

mockData.js

import Mock from 'mockjs';

let data_success =
    {
        status:'ok',//表示账号密码正确,登录成功
    };

let data_error =
    {
        status:'error',//表示账号密码错误,登录失败
    };

export default Mock.mock(
    '/api/login/account','post',
        (req)=>{
            console.log(req)
            let req_data=JSON.parse(req.body)
            if(req_data.username=="admin" && req_data.password=='123456'){
                return data_success;
            }
            return data_error;
        }
)

第三步:在index.js中引入mock数据

在index.js中引入就不需要每个要用mock数据的页面都去引入了,在index.js中引入一次就好

import './mock/mockData';

第四步,引入ajax或者axios进行接口请求

安装axios

cnpm i axios --save

安装jquery

cnpm i jquery --save

在页面中引入axios

import axios from 'axios';

在页面中引入ajax

import $ from 'jquery';

第五步:直接请求数据并进行数据处理

const handleOnClick = () =>{
        axios({
            url:'/api/login/account',
            data:{
                username:'admin',
                password:'123456',
            },
            method:'post'
        }).then((res)=>{
            console.log(res)
            if(res.data.status==='ok'){
                props.history.push('/index')
            }else if(res.data.status==='error'){
                alert("用户名密码错误")
            }
        })
    }

遇到的一个问题是通过data传过去的参数,之后在body里打印出来发现属性名加了双引号,从admin变成了"admin",这个原理还没有搞清楚,但是暂时通过JSON.parse()解决了,JSON.parse()是把字符串转换成对象

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React ,可以使用 `<select>` 元素来创建下拉列表,并通过设置其 `value` 属性来设置当前选的选项。如果你想将后端数据进行过滤,你需要先获取到后端数据,然后根据一定的条件进行过滤,最后将过滤后的数据渲染到 `<select>` 。 以下是一个简单的示例代码,假设我们有一个后端接口 `/api/items`,返回的是一个数组,每个元素包含 `id` 和 `name` 两个属性: ```javascript import { useState, useEffect } from 'react'; function App() { const [items, setItems] = useState([]); const [selectedItemId, setSelectedItemId] = useState(null); useEffect(() => { fetch('/api/items') .then(response => response.json()) .then(data => setItems(data)); }, []); const filteredItems = items.filter(item => item.name.includes('filter')); return ( <div> <select value={selectedItemId} onChange={e => setSelectedItemId(e.target.value)}> <option value="">请选择</option> {filteredItems.map(item => ( <option key={item.id} value={item.id}>{item.name}</option> ))} </select> </div> ); } export default App; ``` 上面的代码,我们使用了 `useState` 和 `useEffect` 这两个 React Hooks 来管理组件状态和异步数据获取。在 `useEffect` ,我们使用 `fetch` 函数来获取后端数据,并将其保存到组件状态。 在 `<select>` ,我们设置了 `value` 属性为 `selectedItemId`,并通过 `onChange` 事件来更新选的选项。同时,我们使用 `filter` 函数来过滤后端数据名称包含 `filter` 的元素,并将其渲染成 `<option>` 元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值