首页 > 其他分享 >React 学习之 Hello World

React 学习之 Hello World

时间:2024-04-06 23:24:07浏览次数:23  
标签:DOM 元素 React 组件 World div root Hello

React 学习之 Hello World

React 简介

React是一个用于构建用户界面的JavaScript库,由Facebook开发并维护。React通过声明式的方式来构建UI,使得代码更易于理解和测试。React的核心概念包括组件(Component)和虚拟DOM(Virtual DOM)。

组件:在React中,UI被构建为组件的集合。组件是封装了HTML、CSS和JavaScript代码的可重用单元。它们可以是函数或类,接受输入(称为“props”)并返回React元素树,这些元素树描述了用户界面在某一时刻的外观。

虚拟DOM:React使用虚拟DOM来提高性能。当组件的状态或属性发生变化时,React会创建一个新的虚拟DOM树,并将其与之前的树进行比较。然后,React计算出差异并仅将这些差异应用到实际的DOM中,从而实现高效的UI更新。

React的生态系统非常丰富,包括React Native(用于构建原生移动应用的框架)、Redux(用于管理应用状态的库)以及许多其他工具和库。这使得React成为构建复杂Web和移动应用的强大工具。

React的优点包括:

组件化:通过将UI拆分为独立的、可重用的组件,可以提高代码的可维护性和可测试性。
声明式:React使用声明式语法来描述UI,这使得代码更易于阅读和理解。
高效性能:虚拟DOM和React的更新策略使得应用能够高效地响应状态变化。
灵活性:React可以与多种其他库和工具配合使用,以满足不同项目的需求。
然而,React也有其局限性,例如学习曲线较陡峭,需要一定的JavaScript基础才能有效使用。此外,对于大型项目,可能需要额外的工具和库来管理状态和路由等复杂问题。

总之,React是一个强大的JavaScript库,适用于构建各种规模和复杂度的Web和移动应用。通过掌握React的核心概念和生态系统中的工具,开发者可以创建出高效、可维护且用户友好的界面。

React的核心概念是什么

React的核心概念主要包括以下几个方面:

  1. 组件(Components):
    • React中构建用户界面的基本单位是组件。组件可以看作是一个独立的、可复用的代码块,它接受输入(通常是以“props”形式传递的数据)并返回React元素树,这些元素树描述了用户界面的一部分。
    • 组件可以是函数组件或类组件。函数组件接受props并返回JSX元素;类组件则继承自React.Component类,具有更多的生命周期方法和状态管理功能。
  2. JSX(JavaScript XML):
    • JSX是React中用于描述用户界面的一种语法扩展。它允许我们在JavaScript代码中编写类似HTML的结构,并在编译时转换成React元素。JSX使得组件的代码更加直观和易于理解。
  3. 虚拟DOM(Virtual DOM):
    • React使用虚拟DOM来提高应用的性能。当组件的状态或属性发生变化时,React会创建一个新的虚拟DOM树,并与之前的虚拟DOM树进行比较。通过比较这两个树,React能够计算出最小的DOM操作来更新实际的DOM,从而实现高效的UI更新。
  4. 状态(State)和属性(Props):
    • 状态是组件内部的数据,它决定了组件的渲染输出。状态是私有的,并且只能通过组件内部的方法(如setState)来更新。
    • 属性是父组件传递给子组件的数据。子组件通过props接收这些数据,并使用它们来渲染输出。属性是只读的,子组件不能修改它们。
  5. 生命周期方法(Lifecycle Methods):
    • 类组件具有一系列的生命周期方法,这些方法在组件的不同阶段(如挂载、更新、卸载)被调用。生命周期方法允许开发者在组件的不同阶段执行特定的逻辑,如数据获取、副作用处理等。
  6. 钩子(Hooks):
    • Hooks是React 16.8版本中引入的新特性,它们允许开发者在不编写类的情况下使用state以及其他的React特性。通过使用钩子,函数组件可以拥有与类组件相同的功能,同时保持代码的简洁和可维护性。

这些核心概念共同构成了React的基础,使得开发者能够高效地构建出复杂且响应式的用户界面。通过掌握这些概念,开发者可以充分利用React的优势来创建出高质量的Web应用。

React 示例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hello World</title>

    <!-- 引入React 的核心库 -->
    <script src="script/react.development.js"></script>
    <!-- 引入React 的DOM库 -->
    <script src="script/react-dom.development.js"></script>
</head>

<body>
    <div id="root"></div>
    <script>
        /*
        https://unpkg.com/[email protected]/umd/react.development.js
        https://unpkg.com/[email protected]/umd/react-dom.development.js
        */
        // React 就是用来代替DOM的

        // // 通过DOM向页面中添加一个div
        // // 创建一个div
        // const div = document.createElement('div'); // 创建一个DOM元素
        // // 向div中添加内容
        // div.innerText = '我是一个div';
        // // 获取页面中的root节点
        // const root = document.getElementById('root');
        // // 将div添加到root节点中
        // root.appendChild(div);

        // 通过React向页面中添加一个div
        /*
        
        React.createElement()
            - 用来创建一个React元素
            - 参数1:表示创建元素的类型,比如div、p、span等 元素名(组件名)
            - 参数2:表示创建元素的属性,比如className、id等 元素中的属性
            - 参数3:表示创建元素的文本内容 元素的子元素(内容)
            - 返回值:表示创建的React元素
        */
        const div = React.createElement('div', {}, '我是React创建的div'); // 创建一个 React 元素
        // 获取页面中的root节点
        const root = document.getElementById('root');
        // 获取根元素对应的React元素
        // ReactDOM.createRoot()
        // - 用来创建一个React根元素
        // - createRoot 允许在浏览器的 DOM 节点中创建根节点以显示 React 组件。
        // - 参数1:表示创建的根元素对应的DOM元素
        // - createRoot 返回一个带有两个方法的的对象,这两个方法是:render 和 unmount。
        // https://zh-hans.react.dev/reference/react-dom/client/createRoot
        const react_root = ReactDOM.createRoot(root);
        // 将div渲染到根元素中
        // root.render(reactNode) 
        // 调用 root.render 以将一段 JSX(“React 节点”)在 React 的根节点中渲染为 DOM 节点并显示。
        // https://zh-hans.react.dev/reference/react-dom/client/createRoot#root-render
        react_root.render(div);

    </script>
</body>

</html>

参考

标签:DOM,元素,React,组件,World,div,root,Hello
From: https://www.cnblogs.com/QiaoPengjun/p/18118157

相关文章

  • vue3的ref和reactive函数
    在vue3中需要引入ref和reactive函数对变量进行声明 首先引入ref,reactive函数,vue3不同于vue2的是,变量的声明需要写在setup函数中,(vue2是直接写在data函数中)其中ref主要是对一些基础数据变量声明,如string,number,boolean,而reactive则是对复杂的,入对象进行声明最后,定义......
  • React19 新特性 – 附带代码示例的更新
    ReactJS是前端开发世界中最流行的UI库之一。我喜欢React的原因之一就是它背后的团队以及社区对它的热情。当社区提出对新功能和改进的需求时,团队会倾听。React的未来令人兴奋而有趣。如果我必须用一句话来总结,我会说这几乎概括了一切:“少写代码,多实现功能。”在本......
  • 嵌入式Linux驱动开发-第一个驱动程序hello
    前言,没事就碎碎念以前跟着正点原子的文档做过一两个简单驱动程序实验,但是总感觉思路不够清晰,后面看韦东山的视频,发现二者结合起来刚好合适,其中韦东山视频理论和框架讲的清楚,正点原子的更像是他们开发板的使用手册。一开始学习驱动,我感觉比较合适的路线是先简单过一遍裸机,跟着正......
  • 开发一个react组件包的时候,组件包里的路径是不是最好使用相对路径../不建议使用别名@
    在开发React组件包时,关于路径的选择,是否使用相对路径(如../)或路径别名(如@),取决于具体项目需求、团队规范以及个人偏好。两者都有其适用场景和优缺点,下面分别进行讨论:使用相对路径(如../):优点:通用性:相对路径直接基于文件系统结构,无需额外配置即可被大多数开发环境和构建工具理......
  • Radium 行内样式在 React18 中不生效
    问题React17升级到18之后,行内样式借助Radium包实现hover和媒体查询,无法生效。npmiradium-S下载Radium依赖包App.jsimportRadiumfrom'radium'conststyleObj={width:100,height:100,backgroundColor:'#FAE',':hover':{backgro......
  • webpack 搭建 react
    前言除了用react官方脚手架搭建react项目,也可用webpack搭建。记录npmiwebpackwebpack-cli-D报错解决:右键以管理员身份打开vscode,再打开文件夹。gitadd./显示Thefilewillhaveitsoriginallineendingsinyourworkingdirectory解决:gitconfig--glo......
  • 【React】路由配置之路由表与Route标签两种方式
    前言下文中使用的是react-router-dom6,首先确保正确下载。未提到的细节可以参考ReactRouter官网。npminstallreact-router-dom@6方式一:Route标签import{Route,Routes}from"react-router-dom"importDashboardfrom"@v/Dashborad"importProjectfrom"@/vie......
  • 简单理解 React 的 createContext 和 Provider
    ......
  • React 函数式组件的执行顺序
    https://github.com/zjy4fun/react-fc-order importReact,{useEffect,useState}from'react'import'./App.css'functionApp(){const[count,setCount]=useState(0)constdoubleCount=count*2constaddCount=()=>{......
  • React 导入 less 及其注意事项
    React导入less及其注意事项首先我们肯定要下载一下less,这里我是用vite构建的react项目,由于vite已经内置了对less配置,所以下载完直接导入就行>npmiless这时候我们就可以十分愉悦地使用less了吗?下面请看一下一个小例子,这里我创建了两个tsx模块,分别......