摘要:需要有一定的基础和的使用经验。这就是属性的作用。方法接收一个新对象来重新赋值。也接收一个函数,这个回调函数这里我默认有一个参数,表示之前的的值,这个函数的返回值就是最新的。但是不同的是在组件内部是只读的。
前言
写这篇文章的主要目标是让初学者更快的上手 React 的项目开发,能有一个循循渐进的理解过程。需要有一定的 JavaScript 基础和 NPM 的使用经验。不多说了,下面会按这个顺序进行介绍:
React 如何编写 Hello World!
React 中三个最基础、最重要的东西
React 中的 JSX
你的第一个 Web 组件
React 中最开始需要关注的生命周期
React 一个组件集合的简单交互
React 开始一个项目的一点建议
React 简单的项目结构组织
开始前需要安装的环境:node.js、yarn一、React 如何编写 Hello World!
1.使用脚手架直接避开环境搭建的问题
// 安装脚手架 ➜ npm install -g create-react-app
2.使用脚手架创建项目
// react-study 是项目的根文件夹 ➜ create-react-app react-study // 执行后的第一行提示语,会提示创建的完整路径 Creating a new React app in /Users/lulin/Desktop/react-study. // 安装成功后会提示下面的内容 Success! Created react-study at /Users/lulin/Desktop/react-study Inside that directory, you can run several commands: // 使用 yarn 启动项目 yarn start Starts the development server. // 要发布项目的时候运行 yarn build Bundles the app into static files for production. // 做测试的时候执行,目前没用 yarn test Starts the test runner. // 可以自定义配置,目前也不用 yarn eject Removes this tool and copies build dependencies, configuration files and scripts into the app directory. If you do this, you can’t go back! We suggest that you begin by typing: cd react-study yarn start Happy hacking!
3.使用 Visual Studio Code 打开 react-study
先只需要关注 src 目录中的 index.js,如下:
├── src │ ├── App.css │ ├── App.js │ ├── App.test.js │ ├── index.css │ ├── index.js // 代码的入口文件 │ ├── logo.svg │ └── registerServiceWorker.js
4.修改 index.js
删除 index.js 中所有的内容,贴以下代码运行:
import React from "react"; import ReactDOM from "react-dom"; ReactDOM.render(Hello World!
, document.getElementById("root") );
ReactDOM.render 方法2个参数,第一个参数就是要渲染的界面结构或者一个 React 组件,第二个参数是要把这个结构渲染到真实网页 DOM 的什么位置。所以这份代码的结果就是在 id=root 的DOM节点下渲染出来 Hello World!。
二、React 中三个最基础、最重要的东西一中介绍了 React 能够渲染一个 HTML 到指定的 DOM 中,但是 React 发明出来主要不是做这个事情的,因为这个事情可以直接通过 原生 JavaScript 的 innerHTML 也能实现。
React 主要作用可以认为是以下几点:
(1) 使用数据来驱动界面更新;
(2) 使用单向变化的数据来让 BUG 更好调试一点;
(3) 更方便、更声明式的编写 Web 组件;
那么这节主要介绍三个东西:
(1) state
(2) props
(3) setState 方法
如果要实现一个简单的加法器,这三个东西已经可以很好实现:
根据上面标的数字:
(1) this.state 里面有一个属性叫 count,这个属性能够通过 this.setState 方法重新传入一个对象来重新赋值。赋值的同时 render() 方法中 this.state.count 也会跟随自动变化,最后体现到网页上。这就是 state 属性的作用。
(2) this.setState() 方法接收一个新对象来重新赋值 this.state。
(3) this.setState() 也接收一个函数,这个回调函数这里我默认有一个 prevState 参数,表示之前的 this.state 的值,这个函数的返回值就是最新的 this.state。
大家还应该注意 button 上绑定的 onClick 事件,这就是跟 DOM 上直接绑定事件的写法一样(目前先这样理解),不过需要都写成驼峰标识。
那么 state 和 setState 都介绍了,props 又是什么呢?你可以暂时理解成一个组件外面传递的属性。
还是以计数器的代码为例子,简单修改一下:
class Counter extends React.Component { state = { count: 0 }; // 加 1 onAdd() { this.setState({ count: this.state.count + 1 }); } // 减 1 onSub() { this.setState(prevState => { return { count: prevState.count - 1 }; }); } render() { return ({/* 这里的 this.props 属性 */}); } } // Counter 组件传了一个 name 属性 ReactDOM.render({this.props.name}
{this.state.count}, document.getElementById("root") );
这里注意代码中的注释,应该很直观了,我们在组件上添加的属性,都能在组件里面通过 this.props 属性获取到,拿一个其他方式来比喻,就相当于函数的参数,参数传递进函数,函数内部可以使用。但是不同的是 this.props 在组件内部是只读的。
看到这里,其实你已经能够使用 React 来构造一个网页了,是不是很简单,就三个东西,加上一个 ReactDOM.render 方法。当然,如果 ES6 不熟悉的话可能还是麻烦,但是这是必须要去学习和克服的,因为目前已经是主流而且是进入了规范的东西。
三、React 中的 JSX接触 React 你肯定会问为什么要用 JSX,JSX 到底是什么。其实非官方的我只想这么解释,就是一个编写视图的模版而已,语法也不复杂,列下:
(1) 基本上是使用原始的 HTML;
(2) 事件绑定方法使用驼峰方式;
(3) 要插入 JavaScript 代码需要 {} 包裹,里面的代码就是原生的 JavaScript 代码;
(4) 避开一些 JavaScript 关键字,比如:class 要写成 className。
上面第二节的计数器中,render() 方法就是编写 JSX 的主要位置,其实 JSX 可以编写在 React 代码中的任意位置,但是推荐不要写得太过于零散。
其实理解这几点就已经足够了,具体可以看一下官方文档 JSX-简介
JSX 最终编译后也就是原生的 JavaScript 代码四、你的第一个 Web 组件
学习了上面这些知识后,其实我们就已经能够封装一个简单的组件的,第一个我这里先以 CheckBox 为例子,比较简单也很常用,应该比较适合。先来分析下这个小组件最基础的功能:就是点击选中和取消选中,模拟的话可以通过换图来实现,就是切换 DOM class。那么我们开始动手吧!
class CheckBox extends React.Component { state = { checked: false // 默认没有选中 }; // 交替(选中/没有选中)的状态 onClickCheckbox() { this.setState(prevState => { return { checked: !prevState.checked }; }); } render() { const checkboxClassArr = ["ui-checkbox"]; // 如果选中,就添加一个 checked class 来给 css 做样式 if(this.state.checked) { checkboxClassArr.push("checked"); } // 组合最后的 class 结果 const checkboxClass = checkboxClassArr.join(" "); return ({/* 这里模拟图标 */} {/* 这里模拟图标内容 */} {this.state.checked ? "选中" : "没有选中"}); } }
这样一个简单的组件就已经完成了!效果如下:
今天就写到这里睡觉吧~可以动手试试,来点感觉哦~这基本是最常用的一些概念和意义了,有兴趣可以提前阅读中文官方文档,已经改版体验好多了,慢慢读下来应该很好理解。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/93571.html
摘要:场景为了更清晰的安排年前年后的工作和值班,现在要对过年期间人员请假的情况进行统计,并且进行一个简单的管理。我们现在来订阅一个名为的事件,用来表示表格中需要展示每条数据。 前言 React 导读(一)React 导读(二) 在之前 2 篇文章中中学习到了写第一个 Web 组件以及常用的生命周期函数的使用,这篇文章将继续之前的目录,开始新的知识点补充: [x] React 如何编写 He...
摘要:一前言在导读三中介绍了项目的背景功能需求项目结构以及组件的划分层次,接下来我们就来看下实际的代码,这一篇文章会主要分享用到的基础组件的封装。 一、前言 在 React 导读(三) 中介绍了项目的背景、功能需求、项目结构以及组件的划分层次,接下来我们就来看下实际的代码,这一篇文章会主要分享用到的基础组件的封装。 二、基础组件设计 我们在设计组件之前本来是有一个流程和过程的,这里我写的组件...
摘要:对于最开始关注的是的初始化以及在哪里请求。在进行初始化,推荐在中进行请求。是在组件即将被卸载前一刻的钩子,一般用于取消中订阅的事件等作用,清理一些不要的变量等,避免内存泄漏。第二条的原因额,说好的更新才调,初始化不调用是符合逻辑的。 前言 在上篇文章React 导读(一)中学习到了写第一个 Web 组件,这篇文章将继续之前的目录,开始新的知识点补充: [x] React 如何编写 H...
摘要:最近买了深入理解的书籍来看,为什么学习这么久还要买这本书呢主要是看到核心团队成员及的创造者为本书做了序,作为一个粉丝,还是挺看好这本书能给我带来一个新的升华,而且本书的作者也非常厉害。 使用ES6开发已经有1年多了,以前看的是阮一峰老师的ES6教程,也看过MDN文档的ES6语法介绍。 最近买了《深入理解ES6》的书籍来看,为什么学习ES6这么久还要买这本书呢?主要是看到Daniel A...
阅读 3659·2021-10-18 13:34
阅读 2373·2021-08-11 11:15
阅读 1123·2019-08-30 15:44
阅读 665·2019-08-26 10:32
阅读 965·2019-08-26 10:13
阅读 2046·2019-08-23 18:36
阅读 1757·2019-08-23 18:35
阅读 502·2019-08-23 17:10