react反向代理使用http-proxy-middleware問題
簡介
http-proxy-middleware用于后臺將請求轉(zhuǎn)發(fā)給其它服務(wù)器。
安裝
$ npm install --save-dev http-proxy-middleware
使用
在src同級目錄創(chuàng)建setupProxy.js 如圖所示
const { createProxyMiddleware } = require('http-proxy-middleware'); //注意寫法,這是1.0以后的版本,最好按抄 module.exports = function (app) { app.use(createProxyMiddleware('/api', { target: 'http://ip:8000/', pathRewrite: { '^/api': '', }, changeOrigin: true, secure: false, // 是否驗證證書 ws: true, // 啟用websocket } )); };
以上表達(dá)的意思是,把/api 代理到 http://ip:8000/ 到這個網(wǎng)址上,重寫一定要,如果不寫
pathRewrite: { '^/api': '', },
會異常,會直接代理到http://ip:8000/api上去了,不是我們要的結(jié)果
測試
handle_click = ()=>{ let t = this; fetch("/api/org/all", {method: 'GET'}).then( function (res) { console.log(res); res.json().then(function (data) { console.log(data); t.setState({ news:data }); } ) }); };
其中/api/org/all 表達(dá)的網(wǎng)址的數(shù)據(jù)是
{ "total": 1, "list": [{ "id": "64", "name": "湖南長沙", "code": "hncs", "type": "試裝" }], "pageNum": 1, "pageSize": 10, "size": 1, "startRow": 1, "endRow": 1, "pages": 1, "prePage": 0, "nextPage": 0, "isFirstPage": true, "isLastPage": true, "hasPreviousPage": false, "hasNextPage": false, "navigatePages": 8, "navigatepageNums": [1], "navigateFirstPage": 1, "navigateLastPage": 1, "firstPage": 1, "lastPage": 1 }
完整代碼。
其中用到了antd mobile的東西,選擇重要的看即可
import React, {Component} from 'react'; import { Picker, List, WhiteSpace } from 'antd-mobile'; import { createForm } from 'rc-form'; const prjList = [ { label: "柳州項目", value: '1', }, { label: "南寧項目", value: '2', }, ]; class Add extends React.Component { state = { prjList: [], cols: 1, pickerValue: [], asyncValue: [], visible: false, colorValue: ['#00FF00'], }; onChangeColor = (color) => { this.setState({ colorValue: color, }); }; handle_click = ()=>{ let t = this; fetch("/api/org/all", {method: 'GET'}).then( function (res) { console.log(res); res.json().then(function (data) { console.log(data); t.setState({ news:data }); } ) }); }; render() { const { getFieldProps } = this.props.form; return (<div> <WhiteSpace size="lg" /> <List style={{ backgroundColor: 'white' }} className="picker-list"> <Picker data={prjList} value={this.state.colorValue} cols={1} onChange={this.onChangeColor} > <List.Item arrow="horizontal">選擇項目</List.Item> </Picker> </List> <WhiteSpace size="lg" /> <button onClick={this.handle_click}>button</button> </div>); } } const Wrapper = createForm()(Add); export default class OrderAdd extends Component { render() { return ( <Wrapper /> ) } }
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
React Native開發(fā)封裝Toast與加載Loading組件示例
這篇文章主要介紹了React Native開發(fā)封裝Toast與加載Loading組件,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09詳解React如何實現(xiàn)代碼分割Code Splitting
這篇文章主要為大家介紹了React如何實現(xiàn)代碼分割Code Splitting示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08react中使用redux-persist做持久化儲存的過程記錄
這篇文章主要介紹了react中使用redux-persist做持久化儲存的相關(guān)資料,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-01-01