React脚手架创建项目

一、使用脚手架创建的Hello React

1.安装依赖库

npm i -g create-react-app

2.使用命令创建项目

create-react-app hello-react

3.进入所创建的项目目录文件夹

cd hello-react

4.启动项目

yarn start // npm start

5.项目目录文件作用


7.简介完整的项目

public index.html
srcApp.jsindex.js

二、父子组件间数据传递

1.父组件向子组件传递数据props

  <Header count={1} />// 子组件通过 this.props获取数据

2.子组件向父组件传递数据

​ 这里利用了,函数在哪里定义,函数的作用域链就在哪里,但子组件调用函数时,就能向父组件传递数据,操作父组件中的数据了,但是将方法传递多层时,比较麻烦

a.先在父组件中定义操作数据的方法

b.父组件定义的方法通过传递props的方式传递给子组件

c.子组件调用通过调用props传递过来的方法,利用给方法传递参数的形式,传递给了父组件

三、任意组件间通信

​ 类似与消息订阅与发布,使用了一个依赖库PubSubJS

1.依赖安装

yarn add pubsub-js

2.使用api

1)import PubSub from 'pubsub-js' //引入
// 消息定越
2)PubSub.subscribe('delete', function(data){ }); //订阅// 取消消息订阅
3)Pubsub.unsubscribe(pubsub) // 取消指定的订阅
4)PubSub.clearAllSubscriptions() //取消全部订阅// 消息发布api
5)PubSub.publish(StationStatisticsID, data) //发布消息
6)PubSub.publishSync(StationStatisticsID, data)

3.在React的使用

a.消息订阅

​ 放在componentDidMount生命钩子上,一般

componentDidMount(){// 这里的token 类似于使用定时器返回的id,在取消特定定时器时需要用到,所以保留到了本组件实例上this.token = PubSub.subscribe('atguigu',(_,stateObj)=>{this.setState(stateObj)});}

b.取消消息订阅

​ 放在componentWillUnmount生命钩子上

componentWillUnmount(){// PubSub.unsubscribe(this.token);PubSub.clearAllSubscriptions() //取消全部订阅}

c.发布消息

​ 凡是需要发布消息的地方都可以使用,我这里展示的是请求成功后的消息发布

axios.get(`http://localhost:3000/api1/search/users?q=${searchEl.value}`).then(response => {PubSub.publish('atguigu', { userList: response.data.items, isLoading: false });},error => {PubSub.publish('atguigu', { isLoading: false, err: error.message });})

四、React 前后端通信

1.axios库的使用

​ 对xhr的封装

a.安装依赖

yarn add axios

b.使用

import axios from 'axios'
axios.get(`http://localhost:3000/api1/search/users?q=${searchEl.value}`).then(response => {console.log(response.data);},error => {console.log(error.message);})

2.fetch使用

​ 使用了关注分离的思想

a.基本使用promise

fetch(`http://localhost:3000/api1/search/users?q=${searchEl.value}`)
.then(response=>response.json()
).then(data=>console.log(data)
).catch(
error=>console.log(error.message)
)

b.配合async语法使用

search = async () => {// 关注分离try {const response = await fetch(`http://localhost:3000/api1/search/users?q=${searchEl.value}`);const data = await response.json();PubSub.publish('atguigu', { userList: data.items, isLoading: false });} catch (error) {PubSub.publish('atguigu', { isLoading: false, err: error.message });}}

五、项目打包

1.打包

npm run build

2.简单运行到服务器

依赖serve库

npm -i serve -g

开启服务器

serve build
// 当在文件夹中时,可直接运行serve,开启服务器

React脚手架创建项目相关推荐

  1. react脚手架创建项目报错,ReactDOM.render is no longer supported in React 18.

    react脚手架创建项目报错,ReactDOM.render is no longer supported in React 18. 最近新写一个react的项目,但是发现已经更新到了18.0的版本, ...

  2. 【react】 使用react 脚手架 创建项目

    项目 一.React(脚手架) 1.1.安装脚手架:  cnpm install create-react-app -g       //全局安装脚手架 1.2.创建项目   create-react ...

  3. React 脚手架创建项目

    意义 现代的 Web 应用要考虑的问题很多,除了编写业务代码之外,还要考虑代码规范.预编译.压缩合并.打包上线等工作,需要有一套完整的解决方案来辅助我们快速开发,而 React 脚手架 就是这么一套完 ...

  4. React框架创建项目详细流程-项目的基本配置-项目的代码规范

    文章目录 React创建项目流程与规范 项目规范 项目配置 目录结构 样式重置 Router配置 Redux状态管理 axios配置 React创建项目流程与规范 项目规范 项目规范: 在项目中都会有 ...

  5. 【Vue】—Vue脚手架创建项目时的 linter / formatter config配置选择

    [Vue]-Vue脚手架创建项目时的 linter / formatter config配置选择 ESLint with error prevention only 只进行报错提醒 ESLint + ...

  6. 图解 利用vue-cli 脚手架创建项目

    最新图解 利用vue-cli 脚手架创建项目 首先你的node环境是搭好的 node -v 一.安装vue-cli 首先全局安装vue-cli,这里使用的是cnpm(淘宝镜像)没有就用npm,强烈建立 ...

  7. 使用express脚手架创建项目

    本篇文章将介绍如何使用express脚手架express-generator快速搭建项目. 全局安装脚手架工具express-generator. cnpm i express-generator - ...

  8. Vue脚手架创建项目流程

    Vue脚手架创建项目流程 图形化创建 在创建文件的文件夹打开cmd, 按住shift右键打开黑窗口,或者直接在文件夹上面路径上面输入cmd 输入vue ui 会自己在浏览器打开 点击创建项目 项目文件 ...

  9. Vue3 脚手架创建项目

    Vue 脚手架创建项目 vue 新建项目 vue create vueadmin 这个命令创建项目会只创建2个文件,这个可以是我没有选择那个安装目录这个,只点了default 模块配置导致的 重新创建 ...

  10. vue脚手架创建项目失败,显示vue:无法加载文件

    问题描述 利用脚手架创建项目时,出现如下报错: 解决方案: 用管理员身份打开PowerShell,输入如下命令,再输入Y即可. 这样,就可以正常创建项目了.

最新文章

  1. ASP.NET CORE RAZOR :向 Razor 页面添加验证
  2. [密码学] 数字签名基础
  3. 既是客户又是供应商清帐配置
  4. SQL反模式笔记7——多列属性
  5. 论文审稿人可以下岗了?CMU都做出论文审稿机器人了!
  6. 对于判断飞鸽传书2007来说是不够的
  7. java编程思想2_《JAVA编程思想2》笔记
  8. python利器-bluepy 一款python封装的BLE利器简单介绍
  9. Solaris下用Bind安装和配置DNS
  10. 树莓派(0) : 树莓派4系统烧录、开机配置、网络连接、静态ip、开启root账号及ssh
  11. RINEX 3.04
  12. php errorcode,errorCode.php
  13. POJ 2242 The Circumference of the Circle G++ 海伦公式 三角形外接圆半径公式 背
  14. SVN文件夹对号图标(更新、冲突等)不显示
  15. 白杨SEO:品牌口碑业务指什么?企业品牌口碑如何推广与预防公关危机?
  16. 计算机的主板显卡内存条怎么查,电脑显卡在哪看?查看自己电脑显卡的显存等信息的方法...
  17. 苹果系统无法购买服务器,itunes目前无法处理您的购买怎么解决
  18. 实现手机扫描二维码页面登录,类似web微信-第三篇,手机客户端
  19. WEKA算法开发——记一次不太成功的遗传属性加权贝叶斯算法实验
  20. 双模控制器很耗电_电动车双模控制器什么意思

热门文章

  1. 全国计算机三级网络技术题库南开,计算机三级上机-适用于三级网络技术数据库等(南开100题).doc...
  2. 计算机声音控制程序,怎么管理电脑各程序的音量-单独调节各个程序音量的方法 - 河东软件园...
  3. 谎言,统计数据和供应商
  4. Ubuntu 中文输入法 fcitx框架和搜狗输入法的配置安装
  5. PcShare服务端改造
  6. 【扩频通信】第五章 扩频信号解扩和解调
  7. suse linux 11 sp3 的安装
  8. Ribbon界面制作
  9. Speedtest在线测试html,Speedtest by Ookla:网络测速插件
  10. 小米9 -MIUI12.5稳定版卡刷包与线刷包-V12.5.3.0.RFACNXM