React学习计划-React16--React基础(五)脚手架创建项目、todoList案例、配置代理、消息订阅与发布

news/2024/7/15 18:52:43 标签: react.js, 学习, 前端

一、使用脚手架create-react-app创建项目

  1. react脚手架
    1. xxx脚手架:用来帮助程序员快速创建一个基于xxx库的模板项目
      1. 包含了所有需要的配置(语法检查、jsx编译、devServe…)
      2. 下载好了所有相关的依赖
      3. 可以直接运行一个简单的效果
    2. react提供了一个用于创建react项目的脚手架库:create-react-app
    3. 项目的整体技术架构为:react+webpack+es6+eslint
    4. 使用脚手架开发的项目特点:模块化、组件化、工程化
  2. 创建项目并启动
    1. 全局安装npm install -g create-react-app
    2. 切换到想创建项目的目录create-react-app react-demo
    3. 进入项目文件夹cd react-demo
    4. 启动项目npm start
    5. 注意:创建项目下载依赖要是特别慢,可以换源create-react-app使用yarn创建react项目
  3. public文件夹index.html介绍
    在这里插入图片描述

二、todoList案例相关知识点

  1. 拆分组件、实现静态组件,注意:className、style的写法
  2. 动态初始化列表,如何确定姜数据放在哪个组件的state中?
    1. 某个组件使用:放在其自身的state
    2. 某些组件使用:放在他们共同的父组件state中(官方称此操作为:状态提升)
  3. 关于父子之间通信:
    1. 【父组件】给【子组件】传递数据:通过props传递
    2. 【子组件】给【父组件】传递数据:通过props传递,要求是父提前给子传递一个函数
  4. 注意defaultCheckedchecked区别,类似还有defaultValuevalue
  5. 状态在哪里,操作状态的方法就在哪里

案例:

  1. 文件目录结构:
    在这里插入图片描述

  2. App.js:
    在这里插入图片描述

  3. app.module.css:
    在这里插入图片描述

  4. Hearder

    • index.jsx
      在这里插入图片描述
    • index.css
      	.search {
      	  width: calc(100% - 20px);
      	  padding: 10px;
      	}
      
  5. List

    • index.jsx
      在这里插入图片描述
    • idnex.css
    ul {
      list-style:  none;
      margin: 0;
      padding: 0;
    }
    
  6. Item

    • index.jsx
      在这里插入图片描述

    • index.module.css

    .li-content{
      display: flex;
      justify-content: space-between;
      padding: 2px 5px;
    }
    .del {
      border: none;
      background: none;
      font-size: 18px;
      font-weight: bold;
      color: red;
    }
    
  7. Footer:

    • index.jsx
      在这里插入图片描述

    • index.module.css

    .footer {
      display: flex;
      justify-content: space-between;
      align-items: center;
      height: 50px;
      padding: 10px 20px;
      border-top: 1px solid #ccc;
    }
    .count{
      margin-left: 20px;
    }
    button {
      width: 150px;
      height: 40px;
      background-color: rgb(255, 0, 72);
      border-radius: 20px;
      color: #fff;
      cursor: pointer;
    }
    

8.运行效果
在这里插入图片描述

三、配置代理

在这里插入图片描述

  1. 代理到服务器的5000端口,前端端口是3000,请求时候http://localhost:3000/students 所有3000端口下没有的资源都会转发到http://localhost:5000,如果有则不转发
    在这里插入图片描述

  2. 配置多个代理
    在这里插入图片描述

四、消息订阅与发布(pubSub)

  1. 安装**yarn add pubsub-js**
  2. 接收组件List/index.jsx
  // 一挂载好就订阅消息
  import PubSub from 'pubsub-js'
  componentDidMount(){
    this.pub = PubSub.subscribe('defClick', (_, data) => {
      this.setState(data)
    })
  }

  // 取消订阅
  componentWillUnmount(){
    PubSub.unsubscribe(this.pub)
  }
  1. 发布信息Hearder/index.jsx
import PubSub from 'pubsub-js'
PubSub.publish('defClick', {val})

http://www.niftyadmin.cn/n/5283631.html

相关文章

查找驱动器卷标和序列号的三种方法,方便快捷

本文介绍了查找驱动器卷标或序列号的三种方法。说明适用于Windows 10到Windows XP。 从命令提示符中查找驱动器的卷标或序列号 驱动器的卷标通常不是一条重要的信息,但当从命令提示符执行某些命令时,它可能是一条重要信息。 当你要格式化某个分区时&a…

多维时序 | MATLAB实CNN-BiGRU-Mutilhead-Attention卷积网络结合双向门控循环单元网络融合多头注意力机制多变量时间序列预测

多维时序 | MATLAB实现CNN-BiGRU-Mutilhead-Attention卷积网络结合双向门控循环单元网络融合多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现CNN-BiGRU-Mutilhead-Attention卷积网络结合双向门控循环单元网络融合多头注意力机制多变量时间序列预测预测效果基本介…

量子密码学简介

量子密码学(英语:Quantum cryptography)泛指利用量子力学的特性来加密的科学。量子密码学最著名的例子是量子密钥分发,而量子密钥分发提供了通信两方安全传递密钥的方法,且该方法的安全性可被信息论所证明。目前所使用…

2023年山东省职业院校技能大赛高职组 “软件测试”赛项竞赛任务三 性能测试

任务三 性能测试 一、任务要求 题目1:使用LoadRunner执行性能测试。 1、脚本录制: (1)脚本一: 脚本名称:PurchaseAdd。 脚本内容:采购专员登录、进行新增采购入库单操作。 具体要求如下&…

做APP小程序软件开发需要注意哪些细节?

随着移动互联网的快速发展,APP和小程序已成为我们日常生活中不可或缺的一部分。然而,在开发过程中,许多细节常常被忽视,导致用户体验不佳、软件漏洞频发等问题。本文将探讨在APP和小程序开发中需要注意的细节,帮助开发…

Hadoop入门学习笔记——四、MapReduce的框架配置和YARN的部署

视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记(汇总) 目录 四、MapReduce的框架配置和YARN的部署4.1. 配置MapReduce…

基于微博爬虫python

一、实验题目 基于python的微博爬虫系统 二、实验目的 1.目的 要求学生能够熟练掌握python语言的基本知识和技能。基本掌握模块和库的使用方法,能够使用模块和库解决问题。能够利用所学的基本知识和技能,解决实际问题。 2.基本要求 要求利用python…

1855_emacs_compnay的使用探索

Grey 全部学习内容汇总: GitHub - GreyZhang/editors_skills: Summary for some common editor skills I used. 1855_emacs_compnay的使用探索 company其实是一个老伙伴了,之前我emacs中体验提升的主力插件之一。主要是用来做各种场景下的补全&#x…