当前位置: 首页>編程日記>正文

React脚手架创建项目

React脚手架创建项目

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,开启服务器


https://www.fengoutiyan.com/post/15770.html

相关文章:

  • 外脚手架项目特征
  • vue脚手架搭建项目
  • 轮扣式脚手架
  • 新型脚手架
  • 建筑脚手架
  • react搭建项目步骤
  • 脚手架项目编码
  • react脚手架搭建
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機