React 入门笔记

简介: React 入门笔记

1、React 简介

       基于 HTML 的前端界面开发变得越来越复杂,其本质问题基本都可以归结于如何将来自于服务器端或者用户输入的动态数据高效的展示到前端界面上。Facebook 在这一问题上对市场上所有 JavaScript MVC 框架都不满意,就决定自己写一套,也就有了 React !


       React 框架正是面向上述问题的一个解决方案,按官网描述,其出发点是:用于开发数据不断变化的大型应用程序(Building large applications with data that changes over time)。相比传统型的前端开发,React 开辟了一个相当另类的途径,实现了前端界面的高性能高效率开发。


       React 被开发出来之后,大家发现这套东西很好用,就在 2013 年 5 月开源了。由于 React 的设计思想极其独特,属于革命性创新,性能出众,代码逻辑却非常简单。所以越来越多的人开始关注和使用,现如今已是和 Vue 并肩的最热的两个前端框架之一 !

2、如何引入 React

  • 通过 BootCDN 的方式引入 React

       在使用 React 之前可以对其进行 BootCDN 引入,和 Vue 相比 React 的引入会稍微麻烦一点,它需要引入 React 和 React-DOM 两个库。引入完成之后在控制台打印一下,看是否引入成功。🚨:先引入 React 后引入 React-Dom。

<div id="app"></div>
<script src="https://cdn.bootcss.com/react/16.13.1/umd/react.development.js"></script>
<script src="https://cdn.bootcss.com/react-dom/16.13.1/umd/react-dom.development.js"></script>
<script>                                      // 你也可以引用生产版 min.js
    console.log(window.React);                // React 对象
    console.log(window.React.createElement);  // React.creathElement 函数
    console.log(window.ReactDOM);             // React-Dom 对象
    console.log(window.ReactDOM.render);      // ReactDOM.render 函数
</script>

ps:在 BootCDN 引入库或插件时,可能会遇到 cjs 和 umd 两种形式:


cjs 全称 CommonJS,是 Node.js 支持的模块规范,umd 是统一模块定义,兼容各种模块规范(含浏览器)。

理论上优先使用 umd,同时支持 Node.js 和浏览器,最新的模块规范是使用 import 和 export 关键字。

  • 通过 webpack 的方式引入 React

       使用 BootCDN 的方式引入 React 的方式确实快捷方便,但是如果需要更新版本的话还需要再修改引入链接,这不免会给开发人员带来一些不必要的麻烦,所以推荐这种通过 webpack 的方式引入 React。而这种方式已经有成熟的脚手架了 create-react-app 帮我们配置好了,我们站在巨人的肩膀上就可以了,安装及创建项目的方式如下:

yarn global add create-react-app    // 或者npm,由于内容比较大推荐使用 yarn
create-react-app ProjectName    // 类似于 Vue 的 vue create ProjectName
// 运行 yarn start 命令,可以看到 React 的网页就说明项目创建成功了
create-react-app ProjectName --template typescript //如果你想支持 TypeScript

3、用 React 实现 +1 操作

       完成第一阶段的引入操作,赶快用 React 来搞一个 +1 操作练练手吧!

<div id="root"></div>
<script src="https://cdn.bootcss.com/react/16.13.1/umd/react.development.js"></script>
<script src="https://cdn.bootcss.com/react-dom/16.13.1/umd/react-dom.development.js"></script>
<script>
    const React = window.React // 如果是webpack或create-react-app,则不需要声明
    const ReactDOM = window.ReactDOM // 如果是webpack或create-react-app,则不需要声明
    let num = 0;  // 创建App div如下,第二个参数是div的属性,第三个参数是表示div中的内容
    const App = ()=> React.createElement('div', {className: 'red'}, [ // 这里的App必须是函数,否则无法刷新视图
        num, 
        React.createElement( // 在div内容的n后面再创建一个button按钮
            'button', 
            {
                onClick: ()=>{ // React不会像Vue一样,当你点击后自动刷新视图
                    num += 1;
                    ReactDOM.render(App(), root); // 需手动刷新,但是App如果是个对象页面不会刷新
                }                                // 对象只能执行一次,需要将 App 改成函数 ()=>{}
            },                                   // 因要实现手动刷新,将APP改为App()
            '+1'
        )
    ]);
    const root = document.querySelector("#root");
    ReactDOM.render(App(), root); // 将创建的App div插入到root div中,因要实现手动刷新,将APP改为App()
</script>

       为什么创建的 App 必须要是一个函数才能实现手动刷新视图?因为如果 App 是一个对象,它就只能执行一次,App 对象读取的变量 num 的值是声明的那一瞬间的值,即立即求值,所以当创建完 button 后手动渲染 App 时,页面上的 num 还是 0。如果 App 是函数就不一样了,函数是会在调用它的时候再求值,即延迟求值,且求值时会读取 num 的最新值。

const App1 = React.createElement('div', null, n) // App1 是一个React元素
const App2 = () => React.createElement('div', null, n) // App2 是一个React函数组件
// 函数App2是延迟执行的代码,会在被调用的时候执行

       React 的 createElement() 方法的返回值 element 可以代表一个 div,但是这个 element 并不是真正的 div,而是一个 DOM对象,仅存在内存中,所以我们一般称 element 为 虚拟 DOM 对象。而 ()=> Reat.createElement() 是一个返回 element 的函数,也可以代表一个 div,这个函数可以多次执行,每次得到最新的虚拟 div 对象。React 会对比两个虚拟 div 对象,找出不同,然后局部更新视图,找不同的算法叫做「DOM Diff 算法」。  

相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
4月前
|
XML JavaScript 前端开发
React Jsx语法入门
【8月更文挑战第13天】React Jsx语法入门
47 4
|
27天前
|
前端开发 JavaScript 定位技术
React 地图组件 Mapbox 入门指南
Mapbox 是一个强大的地图平台,提供丰富的地图数据和工具,支持多种开发语言和框架。本文介绍如何在 React 项目中使用 Mapbox,涵盖基础概念、安装配置、基本用法、常见问题及解决方法、高级用法等内容,并通过代码示例详细说明,帮助开发者提升地图应用的开发效率和用户体验。
75 2
|
1月前
|
前端开发 API UED
React 图片轮播 Carousel:从入门到进阶
本文介绍了在 React 中实现图片轮播(Carousel)的方法,从基础安装和配置 `react-slick` 开始,逐步讲解了常见问题如图片路径、性能优化、自定义样式和交互处理,以及高级话题如动态数据加载和响应式设计。通过详细示例,帮助开发者避免易错点,提升轮播图的用户体验。
33 3
|
1月前
|
监控 前端开发 JavaScript
React 静态网站生成工具 Next.js 入门指南
【10月更文挑战第20天】Next.js 是一个基于 React 的服务器端渲染框架,由 Vercel 开发。本文从基础概念出发,逐步探讨 Next.js 的常见问题、易错点及解决方法,并通过具体代码示例进行说明,帮助开发者快速构建高性能的 Web 应用。
87 10
|
2月前
|
前端开发 JavaScript 开发者
探索现代Web前端技术:React框架入门
【10月更文挑战第9天】 探索现代Web前端技术:React框架入门
|
3月前
|
移动开发 前端开发 JavaScript
构建高效跨平台移动应用:React Native入门指南
【8月更文挑战第47天】在移动开发领域,React Native凭借其跨平台特性和高效的开发模式赢得了开发者的青睐。本文将通过一个简易的待办事项应用实例,带领读者快速入门React Native,并展示如何利用JavaScript和React框架构建具有原生性能的应用。我们将探讨环境配置、界面布局、状态管理和数据流,以及如何打包和发布您的应用。准备好,让我们开始React Native之旅!
75 20
|
3月前
|
前端开发 JavaScript
React技术栈-React UI之ant-design使用入门
关于React技术栈中使用ant-design库的入门教程,包括了创建React应用、搭建开发环境、配置按需加载、编写和运行代码的步骤,以及遇到错误的解决方法。
48 2
React技术栈-React UI之ant-design使用入门
|
3月前
|
XML 存储 前端开发
React 基础入门
【9月更文挑战第1天】本文详细介绍了由Facebook开发的JavaScript库React,涵盖环境搭建、基本概念、常见问题及解决方案。首先,通过安装Node.js、npm和Create React App快速搭建开发环境;接着,讲解了JSX、组件(包括函数和类组件)、state和props等核心概念;最后,针对JSX语法错误、state异步更新及props与state混淆等问题提供了具体的解决方法和示例代码,帮助读者更好地理解和应用React。
41 2
|
4月前
|
JavaScript 前端开发 容器
React基础入门之虚拟dom【一】
【8月更文挑战第14天】React基础入门之虚拟dom
45 0
React基础入门之虚拟dom【一】
|
4月前
|
前端开发 人机交互
langchain 入门指南 - ReAct 模式
langchain 入门指南 - ReAct 模式
115 1