# SGG-REACT 脚手架 学习笔记 (基于React16)
# 不懂就问、不会就学、错了就改
# 创建react应用
# react 脚手架
- XXX脚手架: 用来帮助程序员快速创建一个基于XXX库的模板项目
- 包含所有需要的配置(语法检查,jsx,devServer...)
- 下载好了所有相关的以来
- 可以直接运行一个简单效果
- react提供了一个用于创建react项目的脚手架库:create-react-app
- 项目整体技术架构:react+webpack+es6+eslint
- 使用脚手架开发的项目特点:模块化,组件化,工程化
# 创建项目并启动
- 全局安装:npm install -g create-react-app
- 切换到想创项目的目录,使用命令:create-react-app hello-react
- 进入项目文件夹: cd hello-react
- 启动项目: npm start
# react 脚手架项目结构
node_modules ---- 依赖的包
public ---- 静态资源文件夹
- favicon.icon --- 网站页签图标
- index.html --- 主页面(承装各个组件)SPA(单页面应用)主页面
- logo192.png --- logo图
- logo512.png --- logo图
- manifest.json --- 应用加壳的配置文件
- robots.txt --- 爬虫协议文件
src ---- 源码文件夹
- App.css --- App组件样式
- App.js --- App 组件
- App.test.js --- 用于给App做测试
- index.css --- 样式
- index.js --- 入口文件
- logo.svg --- logo图
- reportWebVitals.js --- 页面性能分析文件(需要web-vitals库的支持)
- setupTests.js --- 应用整体测试
相对应的代码
public--- index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <!-- 指定网站的图标 %PUBLIC_URL% 代表public文件夹的路径--> <link rel="icon" href="%PUBLIC_URL%/favicon.ico" /> <!--开启理想视口 移动端网页的适配 --> <meta name="viewport" content="width=device-width, initial-scale=1" /> <!-- 用于配置浏览器页签的颜色+地址栏的颜色(仅支持安卓手机浏览器)兼容性不是很好 --> <meta name="theme-color" content="#000000" /> <!-- 描述网站信息 搜索引擎 --> <meta name="description" content="Web site created using create-react-app" /> <!-- 用于指定网页添加到手机主屏幕后的图标 (兼容性不好) --> <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /> <!-- 应用加壳时的配置文件 --> <link rel="manifest" href="%PUBLIC_URL%/manifest.json" /> <title>React App</title> </head> <body> <noscript>You need to enable JavaScript to run this app.</noscript> <!-- 容器 --> <div id="root"></div> </body> </html>
src --- index.js
import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; import App from './App'; import reportWebVitals from './reportWebVitals'; // ReactDOM.render(<App/>,document.getElementById('root')) // <React.StrictMode> 检查代码中不合理的地方 ReactDOM.render( <React.StrictMode> <App /> </React.StrictMode>, document.getElementById('root') ) reportWebVitals();
说点废话:项目启动后,首先来到src下的index.js,经过一系列的引入,(react中webpack配置)找到了public下面的index.html里面id为root的节点
# react 实例 TodoList
1,拆分组件,实现静态组件,注意:className,style的写法
2,动态初始化列表,如何确定将数据放在哪个组件的state中?
- 某个组件使用:放在其自身的state中
- 某些组件使用:放在他们共同的父组件state中(官方称此操作为:状态提升)
3,关于父子组件通信:
- 【父组件】给【子组件】传递数据:通过props传递
- 【子组件】给【父组件】传递数据:通过props传递,需要父组件提前给子组件传递一个函数
4,注意defaultChecked和checked的区别,类似的还有:defaultValue和value
5,状态在哪里,操作状态的方法就写在哪里
# 代码地址 (opens new window)