actual combat 43 react项目实战

步骤

1. 起步(脚手架创建项目)

create-react-app 项目名

2. 配置跨域

  • 打开Create React App脚手架中文文档:https://create-react-app.bootcss.com/
  • 打开菜单“服务端集成-Proxying in Development”,这页文档记录了跨域如何配置
    步骤:
  • 安装http-proxy-middleware,命令:npm install http-proxy-middleware --save
  • 创建文件src/setupProxy.js
const { createProxyMiddleware } = require('http-proxy-middleware');

module.exports = function(app) {
  app.use(
    '/api',
    createProxyMiddleware({
      target: 'http://localhost:5000',
      changeOrigin: true,
    })
  );
};

setupProxy.js文件举例:

const { createProxyMiddleware } = require('http-proxy-middleware');

module.exports = function(app) {
  app.use(
    '/api',
    createProxyMiddleware({
      target: 'http://localhost:8080',
    // target: 'https://movie.douban.com/',
      changeOrigin: true
    })
  );
};
  • 随便找个不需要token的网络接口测试即可,如:豆瓣电影,
    https://movie.douban.com/j/search_tags?type=movie&source=index
  • app.js文件测试:
import logo from './logo.svg';
import './App.css';
import axios from 'axios';
import { useEffect } from 'react';

function App() {
  useEffect(() => {
    console.log('useEffect');
    axios.get('/api/test/test/longwang/1').then((res) => {
      // axios.get('/api/j/search_tags?type=movie&source=index').then((res) => {
      console.log(res.data);
    });
  }, []);
  return (
    <div className="App">
      {/* <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header> */}
      app
    </div>
  );
}

export default App;

2. 配置路由

  • 安裝路由依赖,npm i --save react-router-dom
  • 创建三个文件夹,router、components、views,其中router用于指定路由页面,components用于存放非路由页面,views用于存放路由页面。(rfc快捷提示键直接生成函数式组件。
    代码举例:
    分别是,App.js、router.js
  • App.js
import logo from './logo.svg';
import './App.css';
import IndexRouter from './router/IndexRouter';

function App() {
  return (
    <div>
      <IndexRouter></IndexRouter>
    </div>
  );
}

export default App;

  • router.js
import React from 'react'
import { HashRouter, Route, Switch } from 'react-router-dom'
import Login from '../views/login/Login'
import NewsSandBox from '../views/sandbox/NewsSandBox'

export default function IndexRouter() {
    return (
        <HashRouter>
            <Switch>
                <Route path="/login" component={Login}></Route>
                {/* <Route path="/" component={NewsSandBox}></Route> */}
                <Route path="/" router={() =>
                    localStorage.getItem('token') ? <NewsSandBox></NewsSandBox> : <Login></Login>
                }></Route>
            </Switch>
        </HashRouter>
    )
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值