React 中React ajax的学习、脚手架搭建

66 阅读2分钟

​本文已参与「新人创作礼」活动,一起开启掘金创作之路

第一节:定义

用来帮助程序员快速创建一个基于(xxx)库的模板项目,它帮助我们下载好了所有的相关的依赖,可以直接运行一个简单的效果,react创建脚手架:create-react-app(先安装node环境)。  

第二节:安装

 

第1步:npm i -g create-react-app (全局安装);(npm uninstall -g create-react-app 卸载)

安装淘宝镜像:

npm install -g cnpm --registry=registry.npm.taobao.org

cnpm install module

第2步:create-react-app hello-react 切换到想创项目的目录

第3步:进入项目文件  用cd

第4步:启动项目  npm start

 

第三节:文档结构

 

Node_module 相关的模块和依赖目录

Public        静态文件资源,只需留一个index.html

Src           源码文件,写我们的组件

 

启动应用,Hello word!

 

第四节:拆分组件

 

DEMO:todolist案例。

第一节: 前置说明

1. React本身只关注于界面, 并不包含发送ajax请求的代码

2. 前端应用需要通过ajax请求与后台进行交互(json数据)

3. react应用中需要集成第三方ajax库(或自己封装)

第二节: 常用的 ajax 请求库

1. jQuery: 比较重, 如果需要另外引入不建议使用

2. axios: 轻量级, 建议使用

1) 封装XmlHttpRequest对象的ajax

2)  promise风格

3) 可以用在浏览器端和node服务器端

 

第三节: axios

参考网址: github.com/axios/axios

安装:npm add axios

3.1 GET请求

axios.get('/userinfo', {

    params: { ID: 12345  }

 }) .then(function (response) {  console.log(response);

 }).catch(function (error) {  console.log(error); });

3.2 POST请求

axios.post('/userinfo', {

  firstName'Fred',

  lastName'Flintstone'

}).then(function (response) {console.log(response);

}).catch(function (error) {console.log(error);

});

//post传参序列化

·安装:npm add qs

let postData = qs.stringify({  //固定语法

         a:1, //参数自定义

b:1

});

 

第四节:配置代理

4.1 方法一

在package.json中配置:"proxy":"http://localhost:端口",端口要访问的服务器端口。

第一步:React请求访问自己的端口,案例:http://localhost:3000/

第二步:有代理去访问服务器接口,数据返回给代理。

第三步:代理在把数据返回给react请求

备注:react请求先请求当前服务的资源 没有找代理的服务。

4.2 方法二

配置setupProxy.js与src目录下,代码如下:

const proxy = require("http-proxy-middleware");

module.exports = function (app) {

  app.use(

    proxy.createProxyMiddleware("/api1", {

      target: "http://localhost/",//转发目标

      changeOrigin: true,

pathRewrite: {'^/api1': ''}//把前缀替换掉

    })

  );

};

第五节:消息订阅与发布

5.1 安装PubSubJS

npm i pubsub-js

 

5.2 发布消息

页面引入: import PubSub from 'pubsub-js'

发布消息:PubSub.publish('udata',{name:'张三'})

5.3 订阅消息

订阅消息:PubSub.subscribe('udata',(_,data)=>{

this.setState({...data});

})

  卸载:PubSub.unsubscribe(this.token);

参考地址:www.github.com/mroderick/p…