刘切切 發表於 2023-2-27 08:16:00

React学习笔记(一)—— React快速入门

<h1>一、概要</h1>
<p>&nbsp;React是用于构建用户界面的MVVM框架。</p>
<h2>1.1、介绍</h2>
<p data-pid="xYj_iIQS"><code>React</code>&nbsp;是&nbsp;<code>Facebook</code>&nbsp;开发的一款&nbsp;<code>JavaScript</code>&nbsp;库,而&nbsp;<code>React</code>&nbsp;被建造是因为&nbsp;<code>Facebook</code>&nbsp;认为市场上所有的&nbsp;<code>JavaScript MVC</code>&nbsp;框架都不能满足他们的扩展需求, 由于他们非常巨大的代码库和庞大的组织,使得&nbsp;<code>MVC</code>&nbsp;很快变得非常复复杂,每当需要添加一项新的功能或特性时,系统的复杂度就成级数增长,致使代码变得脆弱和不可预测,结果导致他们的&nbsp;<code>MVC</code>&nbsp;正在土崩瓦解。2011 年&nbsp;<code>Facebook</code>&nbsp;软件工程师&nbsp;<code>Jordan Walke</code>&nbsp;创建了&nbsp;<code>React</code>&nbsp;,并且首次使用&nbsp;<code>Facebook</code>&nbsp;的&nbsp;<code>Newsfeed</code>&nbsp;功能。做出来以后,发现这套东西很好用,就在 2013 年 5 月开源了。</p>
<p data-pid="xYj_iIQS"><img src="https://img2023.cnblogs.com/blog/63651/202212/63651-20221221144756664-854197697.png" alt="" width="568" height="239" loading="lazy"></p>
<p>React起源于Facebook的内部项目,它是一个用于构建用户界面的javascript库,Facebook用它来架设公司的Instagram网站,并于2013年5月开源。</p>
<div class="cnblogs_code">
<pre>Instagram(照片墙,简称:ins或IG)是一款运行在移动端上的社交应用,以一种快速、美妙和有趣的方式将你随时抓拍下的图片彼此分享。</pre>
</div>
<p><span class="md-plain md-expand">React拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它。认为它可能是将来Web开发的主流工具<span class="md-pair-s ">之一<span class="md-plain md-expand">。</span></span></span></p>
<p><span class="md-plain md-expand"><span class="md-pair-s "><span class="md-plain md-expand">官网:https://zh-hans.reactjs.org/</span></span></span></p>
<p><span class="md-plain md-expand"><span class="md-pair-s "><span class="md-plain md-expand">源码:https://github.com/facebook/react</span></span></span></p>
<p><span class="md-plain md-expand"><span class="md-pair-s "><span class="md-plain md-expand">&nbsp;React新文档 :(https://beta.reactjs.org/)(开发中....)</span></span></span></p>
<h2>1.2、React的<strong>特点</strong></h2>
<p><strong>a、声明式设计</strong><br>react是面向数据编程,不需要直接去控制dom,你只要把数据操作好,react自己会去帮你操作dom,可以节省很多操作dom的代码。这就是声明式开发。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">命令式编程描述代码如何工作,告诉计算机一步步地执行、先做什么后做什么,在执行完之前,计算机并不知道我要做什么,为什么这么做.它只是一步一步地执行了。

声明式编程表明想要实现什么目的,应该做什么,但是不指定具体怎么做。</span></pre>
</div>
<p><strong>b、使用JSX语法</strong></p>
<p>JSX (JavaScript XML) 是 JavaScript 语法的扩展。React 开发大部分使用 JSX 语法(在JSX中可以将HTML于JS混写)。</p>
<p><strong>c、灵活</strong></p>
<p>react所控制的dom就是id为root的dom,页面上的其他dom元素你页可以使用jq等其他框架 。可以和其他库并存。</p>
<p><strong>d、使用虚拟DOM、高效</strong></p>
<p>虚拟DOM其实质是一个JavaScript对象,当数据和状态发生了变化,都会被自动高效的同步到虚拟DOM中,最后再将仅变化的部分同步到DOM中(不需要整个DOM树重新渲染)。</p>
<p><strong>e、组件化开发</strong></p>
<p>通过 React 构建组件,使得代码更加容易得到复用和维护,能够很好的应用在大项目的开发中。</p>
<p><strong>f、单向数据流</strong></p>
<p>react是单向数据流,父组件传递给子组件的数据,子组件能够使用,但是不能直接通过this.props修改。 这样让数据清晰代码容易维护。</p>
<p dir="auto">1.原生JS操作DOM繁琐,效率低</p>
<p dir="auto">2.使用JS直接操作DOM,浏览器会进行大量的重绘重排</p>
<p dir="auto">3.原生JS没有组件化编码方案,代码复用低</p>
<h2>1.3、React相关技术</h2>
<ul class="ul-list" data-mark="*">
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">React可以开发Web应用—ReactJs</span></p>
</li>
<li class="md-list-item">
<p class="md-end-block md-p"><span class="md-plain">React可以开发移动端—React-native</span></p>
<ul>
<li class="md-list-item">React&nbsp;Native&nbsp;是一个使用JavaScript 和 React 来编写跨终端移动应用(Android 或 IOS)的一种解决方案</li>
</ul>
</li>
<li class="md-list-item md-focus-container">
<p class="md-end-block md-p md-focus"><span class="md-plain md-expand">React可以开发VR应用—React 360</span></p>
<ul>
<li class="md-list-item md-focus-container">React 360是一个创建3D和VR用户交互的框架.构建在React的基础之上,React是一个简化复杂UI创建的库,React 360可以让你用相似的工具和概念在网页上创建沉浸式的360度的内容。其特点:
<ul>
<li>
<p>React 360 是一个用于构建VR全景360体验的网页应用框架,基于React</p>
</li>
<li>
<p>React 360 提供了一些控件,用于快速创建360度沉浸式的内容</p>
</li>
<li>
<p>跨平台,支持电脑、移动设备、VR设备</p>
</li>
<li>
<p>支持多种格式的全景视频</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h1>二、第一个React程序</h1>
<h2>&nbsp;2.1、Web端</h2>
<p>实例中我们引入了三个库: react.development.min.js 、react-dom.development.min.js 和 babel.min.js:</p>
<ul>
<li><strong>react.min.js</strong>&nbsp;- React 的核心库</li>
<li><strong>react-dom.min.js</strong>&nbsp;- 提供与 DOM 相关的功能</li>
<li><strong>babel.min.js</strong>&nbsp;- Babel 可以将 ES6 代码转为 ES5 代码,这样我们就能在目前不支持 ES6 浏览器上执行 React 代码。Babel 内嵌了对 JSX 的支持。通过将 Babel 和 babel-sublime 包(package)一同使用可以让源码的语法渲染上升到一个全新的水平。</li>
</ul>
<p>CDN引入:https://unpkg.com/&nbsp;&nbsp;https://www.staticfile.org/</p>
<p>可以通过 CDN 获得 React 和 ReactDOM 的 UMD 版本。</p>
<div class="gatsby-highlight" data-language="html">
<pre class="gatsby-code-html"><code class="gatsby-code-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;script <span class="token attr-name">crossorigin <span class="token attr-name">src<span class="token attr-value"><span class="token punctuation attr-equals">=<span class="token punctuation">"https://unpkg.com/react@18/umd/react.development.js<span class="token punctuation">"<span class="token punctuation">&gt;<span class="token script"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/script<span class="token punctuation">&gt;
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;script <span class="token attr-name">crossorigin <span class="token attr-name">src<span class="token attr-value"><span class="token punctuation attr-equals">=<span class="token punctuation">"https://unpkg.com/react-dom@18/umd/react-dom.development.js<span class="token punctuation">"<span class="token punctuation">&gt;<span class="token script"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/script<span class="token punctuation">&gt;</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
</div>
<p>上述版本仅用于开发环境,不适合用于生产环境。压缩优化后可用于生产的 React 版本可通过如下方式引用:</p>
<div class="gatsby-highlight" data-language="html">
<pre class="gatsby-code-html"><code class="gatsby-code-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;script <span class="token attr-name">crossorigin <span class="token attr-name">src<span class="token attr-value"><span class="token punctuation attr-equals">=<span class="token punctuation">"https://unpkg.com/react@18/umd/react.production.min.js<span class="token punctuation">"<span class="token punctuation">&gt;<span class="token script"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/script<span class="token punctuation">&gt;
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;script <span class="token attr-name">crossorigin <span class="token attr-name">src<span class="token attr-value"><span class="token punctuation attr-equals">=<span class="token punctuation">"https://unpkg.com/react-dom@18/umd/react-dom.production.min.js<span class="token punctuation">"<span class="token punctuation">&gt;<span class="token script"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/script<span class="token punctuation">&gt;</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
</div>
<p>如果需要加载指定版本的&nbsp;<code class="gatsby-code-text">react</code>&nbsp;和&nbsp;<code class="gatsby-code-text">react-dom</code>,可以把&nbsp;<code class="gatsby-code-text">18</code>&nbsp;替换成所需加载的版本号。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">&lt;!</span><span style="color: rgba(255, 0, 255, 1)">DOCTYPE html</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">html </span><span style="color: rgba(255, 0, 0, 1)">lang</span><span style="color: rgba(0, 0, 255, 1)">="en"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">head</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">meta </span><span style="color: rgba(255, 0, 0, 1)">charset</span><span style="color: rgba(0, 0, 255, 1)">="UTF-8"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">meta </span><span style="color: rgba(255, 0, 0, 1)">http-equiv</span><span style="color: rgba(0, 0, 255, 1)">="X-UA-Compatible"</span><span style="color: rgba(255, 0, 0, 1)"> content</span><span style="color: rgba(0, 0, 255, 1)">="IE=edge"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">meta </span><span style="color: rgba(255, 0, 0, 1)">name</span><span style="color: rgba(0, 0, 255, 1)">="viewport"</span><span style="color: rgba(255, 0, 0, 1)"> content</span><span style="color: rgba(0, 0, 255, 1)">="width=device-width, initial-scale=1.0"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">title</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>Hello React!<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">title</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">head</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">body</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">id</span><span style="color: rgba(0, 0, 255, 1)">="app"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="https://cdn.staticfile.org/react/18.2.0/umd/react.development.js"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="https://cdn.staticfile.org/react-dom/18.2.0/umd/react-dom.development.js"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="https://cdn.staticfile.org/babel-standalone/7.20.6/babel.min.js"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">//</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)"> 1、创建虚拟dom</span>
      <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">//</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)"> React.createElement(标签名称,对象形式的DOM属性信息,DOM中的内容/子DOM)</span>
      <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">//</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)"> React.createElement(标签名称,对象形式的DOM属性信息,DOM中的内容/子DOM,DOM中的内容/子DOM,...)</span>
      <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">//</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)"> React.createElement(标签名称,对象形式的DOM属性信息,)</span>
<span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">      let vNode </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)"> React.createElement(</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">h2</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">, {}, </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">Hello React!</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">);
      </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">//</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">2、获取app根元素</span>
<span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">      let app </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)"> document.querySelector(</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">#app</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">);
      </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">//</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">3、创建根元素</span>
<span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">      let root </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)"> ReactDOM.createRoot(app);
      </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">//</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">4、将虚拟节点渲染到根结点上</span>
<span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">      root.render(vNode);
    </span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">body</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">html</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span></pre>
</div>
<p>效果:</p>
<p><img src="https://img2023.cnblogs.com/blog/63651/202212/63651-20221221145405137-932467677.png" alt="" width="401" height="122" loading="lazy"></p>
<p><strong>注意</strong>:<span class="md-plain md-expand">在react中,JavaScript代码部分里面如果涉及到DOM的class属性操作,不要直接使用<span class="md-pair-s"><code>class</code><span class="md-plain">,因为<span class="md-pair-s"><code>class</code><span class="md-plain">是es6里面的关键词,react里面需要使用<span class="md-pair-s"><code>className</code><span class="md-plain md-expand">进行替换</span></span></span></span></span></span></span></p>
<div class="cnblogs_code">
<pre>1 const vNode = React.createElement("div", {id: "hi",className: "cls"}, "hello world");</pre>
</div>
<h2>2.2、JSX</h2>
<p><span style="font-size: 14px">由于通过React.createElement()方法创建的React元素代码比较繁琐,结构不直观,无法一眼看出描述的结构,不优雅,开发时写代码很不友好。</span></p>
<p><span style="font-size: 14px">JSX 是 JavaScript XML 的简写,表示在 JavaScript 代码中写XML(HTML)格式的代码。<br>优势:声明式语法更加直观,与HTML结构相同,降低了学习成本、提升开发效率。<br>JSX 是 React 的核心内容。</span></p>
<p>  React使用JSX来替代常规的JavaScript,JSX可以理解为的JavaScript语法扩展,它里面的标签申明要符合XML规范要求。</p>
<ul>
<ul>
<li>React不一定非要使用JSX,但它有以下优点:
<ul>
<li><span class="md-plain md-expand">JSX执行<span class="md-pair-s "><strong>更快</strong><span class="md-plain md-expand">,因为它在编译为JavaScript代码后进行了优化</span></span></span></li>
<li><span class="md-plain md-expand">它是类型安全的,在编译过程中就能发现错误</span></li>
<li><span class="md-plain md-expand"><span class="md-pair-s "><span class="md-plain md-expand"><span class="md-plain md-expand">声明式语法更加直观,与HTML结构相同,<span class="md-pair-s "><strong>降低了学习成本</strong><span class="md-plain md-expand">,提升开发效率速度</span></span></span></span></span></span></li>












</ul>












</li>
<li><span class="md-plain md-expand"><span class="md-plain md-expand">JSX语法:</span></span>
<ul>
<li><span class="md-plain md-expand">定义虚拟DOM时,不要用引号<br></span></li>
<li><span class="md-plain md-expand">标签中混入js表达式时要用{}</span></li>
<li><span class="md-plain md-expand">样式的类名指定不要用class,要用className</span></li>
<li><span class="md-plain md-expand">内联样式,要用style={{key: value}}的形式去写</span></li>
<li><span class="md-plain md-expand">只有一个根标签</span></li>
<li><span class="md-plain md-expand">标签必须闭合</span></li>
<li><span class="md-plain md-expand"><span class="md-plain md-expand">标签首字母:</span></span>
<ul>
<li><span class="md-plain md-expand">小写字母开头,则会将标签转为html中同名标签,若html标签中无对应的同名元素,编译会报错<br></span></li>
<li><span class="md-plain md-expand">大写字母开头,react就去渲染对应的组件,若组件没有定义,则报错</span></li>













</ul>













</li>













</ul>













</li>













</ul>












</ul>
<ul>
<li><span class="md-plain md-expand"><span class="md-pair-s "><span class="md-plain md-expand"><span class="md-plain md-expand"><span class="md-pair-s "><span class="md-plain md-expand"><span class="md-plain md-expand">在项目中尝试JSX最快的方法是在页面中添加这个&nbsp;<span class="md-pair-s"><code>&lt;script&gt;</code><span class="md-plain md-expand">&nbsp;标签,引入解析jsx语法的babel类库</span></span></span></span></span></span></span></span></span></li>
<li><span class="md-plain md-expand"><span class="md-pair-s "><span class="md-plain md-expand"><span class="md-plain md-expand"><span class="md-pair-s "><span class="md-plain md-expand"><span class="md-pair-s md-expand"><code>&lt;script&gt;</code><span class="md-plain">标签块中使用了JSX语法,则一定要申明类型<span class="md-pair-s"><code>type="text/babel"</code><span class="md-plain md-expand">,否则babel将不进行解析jsx语法</span></span></span></span></span></span></span></span></span></span></li>












</ul>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">&lt;!</span><span style="color: rgba(255, 0, 255, 1)">DOCTYPE html</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">html </span><span style="color: rgba(255, 0, 0, 1)">lang</span><span style="color: rgba(0, 0, 255, 1)">="en"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">head</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">meta </span><span style="color: rgba(255, 0, 0, 1)">charset</span><span style="color: rgba(0, 0, 255, 1)">="UTF-8"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">meta </span><span style="color: rgba(255, 0, 0, 1)">http-equiv</span><span style="color: rgba(0, 0, 255, 1)">="X-UA-Compatible"</span><span style="color: rgba(255, 0, 0, 1)"> content</span><span style="color: rgba(0, 0, 255, 1)">="IE=edge"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">meta </span><span style="color: rgba(255, 0, 0, 1)">name</span><span style="color: rgba(0, 0, 255, 1)">="viewport"</span><span style="color: rgba(255, 0, 0, 1)"> content</span><span style="color: rgba(0, 0, 255, 1)">="width=device-width, initial-scale=1.0"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">title</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>Hello React JSX!<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">title</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">head</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">body</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">id</span><span style="color: rgba(0, 0, 255, 1)">="app"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="https://cdn.staticfile.org/react/18.2.0/umd/react.development.js"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="https://cdn.staticfile.org/react-dom/18.2.0/umd/react-dom.development.js"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="https://cdn.staticfile.org/babel-standalone/7.20.6/babel.min.js"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> script标签上一定要写上 type="text/babel" </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">type</span><span style="color: rgba(0, 0, 255, 1)">="text/babel"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">//</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)"> 1、创建虚拟dom</span>
<span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">      let vNode </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span> <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">&lt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">h2</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">&gt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">Hello React JSX</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">!&lt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">/</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">h2&gt;;</span>
      <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">//</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">2、获取app根元素</span>
<span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">      let app </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)"> document.querySelector(</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">#app</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">);
      </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">//</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">3、创建根元素</span>
<span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">      let root </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)"> ReactDOM.createRoot(app);
      </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">//</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">4、将虚拟节点渲染到根结点上</span>
<span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">      root.render(vNode);
    </span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">body</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">html</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span></pre>
</div>
<p>运行结果:</p>
<p><img src="https://img2023.cnblogs.com/blog/63651/202212/63651-20221222192432660-1775317785.png" alt="" width="332" height="97" loading="lazy"></p>
<p>添加属性</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">&lt;!</span><span style="color: rgba(255, 0, 255, 1)">DOCTYPE html</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">html </span><span style="color: rgba(255, 0, 0, 1)">lang</span><span style="color: rgba(0, 0, 255, 1)">="en"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">head</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">meta </span><span style="color: rgba(255, 0, 0, 1)">charset</span><span style="color: rgba(0, 0, 255, 1)">="UTF-8"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">meta </span><span style="color: rgba(255, 0, 0, 1)">http-equiv</span><span style="color: rgba(0, 0, 255, 1)">="X-UA-Compatible"</span><span style="color: rgba(255, 0, 0, 1)"> content</span><span style="color: rgba(0, 0, 255, 1)">="IE=edge"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">meta </span><span style="color: rgba(255, 0, 0, 1)">name</span><span style="color: rgba(0, 0, 255, 1)">="viewport"</span><span style="color: rgba(255, 0, 0, 1)"> content</span><span style="color: rgba(0, 0, 255, 1)">="width=device-width, initial-scale=1.0"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">title</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>Hello React JSX!<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">title</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">style</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(128, 0, 0, 1)">
      .cls1 </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">{</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(255, 0, 0, 1)">
      color</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">:</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 255, 1)"> blue</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">;</span>
      <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">}</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">style</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">head</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">body</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">id</span><span style="color: rgba(0, 0, 255, 1)">="app"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="https://cdn.staticfile.org/react/18.2.0/umd/react.development.js"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="https://cdn.staticfile.org/react-dom/18.2.0/umd/react-dom.development.js"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="https://cdn.staticfile.org/babel-standalone/7.20.6/babel.min.js"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> script标签上一定要写上 type="text/babel" </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">type</span><span style="color: rgba(0, 0, 255, 1)">="text/babel"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">//</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)"> 1、创建虚拟dom</span>
<span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">      let vNode </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span> <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">&lt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">h2 className</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">cls1</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">&gt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">Hello React JSX</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">!&lt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">/</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">h2&gt;;</span>
      <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">//</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">2、获取app根元素</span>
<span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">      let app </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)"> document.querySelector(</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">#app</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">);
      </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">//</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">3、创建根元素</span>
<span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">      let root </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)"> ReactDOM.createRoot(app);
      </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">//</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">4、将虚拟节点渲染到根结点上</span>
<span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">      root.render(vNode);
    </span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">body</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">html</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span></pre>
</div>
<p>调用javascript中的方法</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">&lt;!</span><span style="color: rgba(255, 0, 255, 1)">DOCTYPE html</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">html </span><span style="color: rgba(255, 0, 0, 1)">lang</span><span style="color: rgba(0, 0, 255, 1)">="en"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">head</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">meta </span><span style="color: rgba(255, 0, 0, 1)">charset</span><span style="color: rgba(0, 0, 255, 1)">="UTF-8"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">meta </span><span style="color: rgba(255, 0, 0, 1)">name</span><span style="color: rgba(0, 0, 255, 1)">="viewport"</span><span style="color: rgba(255, 0, 0, 1)"> content</span><span style="color: rgba(0, 0, 255, 1)">="width=device-width, initial-scale=1.0"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">title</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>Document<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">title</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">style</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(128, 0, 0, 1)">
      .sss</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">{</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(255, 0, 0, 1)">
            color</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">:</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 255, 1)"> red</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">;</span>
      <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">}</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">style</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">head</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">body</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 准备好容器 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">id</span><span style="color: rgba(0, 0, 255, 1)">="test"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      
    <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">body</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 引入依赖 ,引入的时候,必须就按照这个步骤</span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="../js/react.development.js"</span><span style="color: rgba(255, 0, 0, 1)"> type</span><span style="color: rgba(0, 0, 255, 1)">="text/javascript"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="../js/react-dom.development.js"</span><span style="color: rgba(255, 0, 0, 1)"> type</span><span style="color: rgba(0, 0, 255, 1)">="text/javascript"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>

<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="../js/babel.min.js"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)">这里使用了js来创建虚拟DOM</span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">type</span><span style="color: rgba(0, 0, 255, 1)">="text/babel"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">
      const MyId </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span> <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">title</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">;
      const MyData </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span> <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">Cyk</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">;
      </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">//</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)"> 1.创建虚拟DOM</span>
<span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">      const VDOM </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)"> (
            </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">&lt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">h1 id </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)"> {MyId.toLocaleUpperCase()}</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">&gt;</span>
                <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">&lt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">span className </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span> <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">sss</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)"> style </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)"> {{fontSize:</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">'</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">50px</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">'</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">}}</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">&gt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">sss</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">&lt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">/</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">span&gt;</span>
            <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">&lt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">/</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">h1&gt;</span>
<span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">      )
      </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">//</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)"> 2.渲染,如果有多个渲染同一个容器,后面的会将前面的覆盖掉</span>
<span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">      ReactDOM.render(VDOM,document.getElementById(</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">test</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">));
</span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>

<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">html</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span></pre>
</div>
<p>事件处理:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">&lt;!</span><span style="color: rgba(255, 0, 255, 1)">DOCTYPE html</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">html </span><span style="color: rgba(255, 0, 0, 1)">lang</span><span style="color: rgba(0, 0, 255, 1)">="en"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">head</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">meta </span><span style="color: rgba(255, 0, 0, 1)">charset</span><span style="color: rgba(0, 0, 255, 1)">="UTF-8"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">meta </span><span style="color: rgba(255, 0, 0, 1)">http-equiv</span><span style="color: rgba(0, 0, 255, 1)">="X-UA-Compatible"</span><span style="color: rgba(255, 0, 0, 1)"> content</span><span style="color: rgba(0, 0, 255, 1)">="IE=edge"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">meta </span><span style="color: rgba(255, 0, 0, 1)">name</span><span style="color: rgba(0, 0, 255, 1)">="viewport"</span><span style="color: rgba(255, 0, 0, 1)"> content</span><span style="color: rgba(0, 0, 255, 1)">="width=device-width, initial-scale=1.0"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">title</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>Document<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">title</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">head</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">body</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">id</span><span style="color: rgba(0, 0, 255, 1)">="app"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="https://cdn.staticfile.org/react/18.2.0/umd/react.development.js"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="https://cdn.staticfile.org/react-dom/18.2.0/umd/react-dom.development.js"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="https://cdn.staticfile.org/babel-standalone/7.20.6/babel.min.js"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">type</span><span style="color: rgba(0, 0, 255, 1)">="text/babel"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">
      let clickHandler </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)"> (e) </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=&gt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)"> {
      alert(e.target.innerHTML);
      };
      let title </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span> <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">message</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">;
      </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">//</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 128, 0, 1)">创建虚拟DOM结点</span>
<span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">      let vnode </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)"> (
      </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">&lt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">div title</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">{title.toUpperCase()} onClick</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">{clickHandler}</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">&gt;</span>
          <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">&lt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">h2 style</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">{{ color: </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">blue</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)"> }}</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">&gt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">Hello React</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">!&lt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">/</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">h2&gt;</span>
      <span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">&lt;</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">/</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">div&gt;</span>
<span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">      );
      let root </span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">=</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)"> ReactDOM.createRoot(document.querySelector(</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">#app</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">"</span><span style="background-color: rgba(245, 245, 245, 1); color: rgba(0, 0, 0, 1)">));
      root.render(vnode);
    </span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">body</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">html</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span></pre>
</div>
<p>结果:</p>
<p><img src="https://img2023.cnblogs.com/blog/63651/202302/63651-20230224144501540-27082581.png" alt="" width="1078" height="195" loading="lazy"></p>
<h2>2.3、脚手架</h2>
<p>1.使用 create-react-app 脚手架创建项目</p>
<p><strong>npx create-react-app 项目名 或者 yarn create react-app 项目名</strong>(npx 是一个临时使用第三方模块的命令,会临时下载这个包,使用完毕就删除了)</p>
<p id="articleContentId" class="title-article">npm和npx的区别</p>
<p>区别1.一个永久存在(npm),一个临时安装(npx),用完后删除</p>
<p>区别2.npx 会帮你执行依赖包里的二进制文件。也就是说 npx 会自动查找当前依赖包中的可执行文件,如果找不到,就会去环境变量里面的 PATH 里找。如果依然找不到,就会帮你安装!</p>
<p>区别3.npx可以执行文件,但是npm不可以</p>
<p>虽然在本地搭建环境要费一些时间,但是你可以选择自己喜欢的编辑器来完成开发。以下是具体步骤:</p>
<ol>
<li>确保你安装了较新版本的&nbsp;Node.js。</li>
<li>按照&nbsp;Create React App 安装指南创建一个新的项目</li>
</ol>
<div class="gatsby-highlight" data-language="bash">
<pre class="gatsby-code-bash"><code class="gatsby-code-bash">npx create-react-app my-app</code></pre>
</div>
<ol start="3">
<li>删除掉新项目中&nbsp;<code class="gatsby-code-text">src/</code>&nbsp;文件夹下的所有文件。</li>
</ol>
<blockquote>
<p>注意:</p>
<p>不要删除整个&nbsp;<code class="gatsby-code-text">src</code>&nbsp;文件夹,删除里面的源文件。我们会在接下来的步骤中使用示例代码替换默认源文件。</p>
</blockquote>
<div class="gatsby-highlight" data-language="bash">
<pre class="gatsby-code-bash"><code class="gatsby-code-bash"><span class="token builtin class-name">cd my-app
<span class="token builtin class-name">cd src

<span class="token comment"># 如果你使用 Mac 或 Linux:
<span class="token function">rm -f *

<span class="token comment"># 如果你使用 Windows:
del *

<span class="token comment"># 然后回到项目文件夹
<span class="token builtin class-name">cd <span class="token punctuation">..</span></span></span></span></span></span></span></span></code></pre>
</div>
<ol start="4">
<li>在&nbsp;<code class="gatsby-code-text">src/</code>&nbsp;文件夹中创建一个名为&nbsp;<code class="gatsby-code-text">index.css</code>&nbsp;的文件,并拷贝这些 CSS 代码。</li>
<li>在&nbsp;<code class="gatsby-code-text">src/</code>&nbsp;文件夹下创建一个名为&nbsp;<code class="gatsby-code-text">index.js</code>&nbsp;的文件,并拷贝这些 JS 代码。</li>
<li>拷贝以下三行代码到&nbsp;<code class="gatsby-code-text">src/</code>&nbsp;文件夹下的&nbsp;<code class="gatsby-code-text">index.js</code>&nbsp;文件的顶部:</li>
</ol>
<div class="gatsby-highlight" data-language="jsx">
<pre class="gatsby-code-jsx"><code class="gatsby-code-jsx"><span class="token keyword">import React <span class="token keyword">from <span class="token string">'react'<span class="token punctuation">;
<span class="token keyword">import ReactDOM <span class="token keyword">from <span class="token string">'react-dom/client'<span class="token punctuation">;
<span class="token keyword">import <span class="token string">'./index.css'<span class="token punctuation">;</span></span></span></span></span></span></span></span></span></span></span></code></pre>
</div>
<p>现在,在项目文件夹下执行&nbsp;<code class="gatsby-code-text">npm start</code>&nbsp;命令,然后在浏览器访问&nbsp;<code class="gatsby-code-text">http://localhost:3000</code>。这样你就可以在浏览器中看见一个空的井字棋的棋盘了。</p>
<p>2.项目结构</p>
<p><img src="https://img2022.cnblogs.com/blog/2767346/202204/2767346-20220409203054214-1664858880.png"></p>
<p>3.启动项目</p>
<p><strong>我们只需要在项目根目录下使用 npm start 或者 yarn start 就可以启动项目。</strong></p>
<p><strong>react17的ReactDOM.render()用法</strong></p>
<pre class="highlighter-hljs hljs JavaScript"><span class="hljs-keyword">import React <span class="hljs-keyword">from <span class="hljs-string">'react'
<span class="hljs-keyword">import ReactDOM <span class="hljs-keyword">from <span class="hljs-string">'react-dom'

ReactDOM.render((
<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">h1&gt;Hello World<span class="hljs-tag">&lt;/<span class="hljs-name">h1&gt;
),
<span class="hljs-built_in">document.getElementById(<span class="hljs-string">'root')
)
</span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<p><strong>react18的ReactDOM.createRoot的用法。</strong></p>
<pre class="highlighter-hljs hljs JavaScript"><span class="hljs-keyword">import React <span class="hljs-keyword">from <span class="hljs-string">'react';
<span class="hljs-keyword">import ReactDOM <span class="hljs-keyword">from <span class="hljs-string">'react-dom/client';
<span class="hljs-keyword">const rootEl = <span class="hljs-built_in">document.getElementById(<span class="hljs-string">'root')
<span class="hljs-keyword">const root = ReactDOM.createRoot(rootEl)
root.render(<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">h1&gt;Hello World<span class="hljs-tag">&lt;/<span class="hljs-name">h1&gt;)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
<p><img src="https://img2023.cnblogs.com/blog/63651/202212/63651-20221222193559709-549229461.png" alt="" loading="lazy"></p>
<p>脚手架create-react-app创建的react项目,已经集成了webpack,只要运行命令:<br><code>npm run build</code>&nbsp;项目就会编译成功,生成一个build文件夹,现在问题来了,如何启动这个项目呢。</p>
<p>我们看到命令执行完了,会给一个操作提示如下图:</p>
<p><img src="https://img2024.cnblogs.com/blog/63651/202401/63651-20240101165555701-786022432.png" alt="" width="596" height="435" loading="lazy"></p>
<p>首先提醒我们要在package.json里面加上主页,接着就是全局安装serve:<code>npm install -g serve</code></p>
<p>serve安装成功了以后,运行<code>serve -s build</code>&nbsp;项目就启动起来了,它的固定端口是5000;那么我们想改动端口怎么办呢?运行下面的命令就可以用指定的端口启动项目了:</p>
<p><code>serve -l 2000 -s build</code>&nbsp;//从2000端口启动项目</p>
<p>修改index.js文件</p>
<div class="cnblogs_code">
<pre>import ReactDOM from "react-dom/client"<span style="color: rgba(0, 0, 0, 1)">;

</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">1、创建根结点</span>
const root = ReactDOM.createRoot(document.getElementById("root"<span style="color: rgba(0, 0, 0, 1)">));
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">2、创建虚拟DOM</span>
const vNode =<span style="color: rgba(0, 0, 0, 1)"> (
</span>&lt;div&gt;
    &lt;h2&gt;Hello React!&lt;/h2&gt;
&lt;/div&gt;
<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">3、将虚拟DOM渲染到根结点上</span>
root.render(vNode);</pre>
</div>
<p>运行结果:</p>
<p><img src="https://img2023.cnblogs.com/blog/63651/202212/63651-20221222194335191-1553411729.png" alt="" width="304" height="92" loading="lazy"></p>
<h2>2.4、使用Vite创建React项目</h2>
<p><img src="https://img2023.cnblogs.com/blog/63651/202302/63651-20230227100747093-1808299204.png" alt="" loading="lazy"></p>
<p>&nbsp;</p>
<p><img src="https://img2023.cnblogs.com/blog/63651/202302/63651-20230227103624928-1476462692.png" alt="" loading="lazy"></p>
<p class="title">Parsing error: '&gt;' expected.eslint</p>
<p class="title">vscode左下角齿轮设置, 删除eslint.validate中的html</p>
<h1>三、开发工具与插件</h1>
<h2>3.1、安装React开发调试插件</h2>
<p>不采用自动构建,直接为 crx 文件(直接拖入浏览器即可)。<strong>点击即可下载!</strong>【秘钥:dv6e】</p>
<ol>
<li>进入到【谷歌扩展程序】界面。在谷歌浏览器直接输入:&nbsp;chrome://extensions/&nbsp; &nbsp;即可进去扩展程序界面。</li>
<li>把 .crx 结尾的文件拖入浏览器即可。(如下图1)</li>
<li>运行 react 项目,打开控制台,就可以看到了。(如下图2)</li>
</ol>
<p>图一:</p>
<p><img src="https://img2022.cnblogs.com/blog/1601073/202211/1601073-20221124002043670-324045110.png" alt="" width="1071" height="398" class="medium-zoom-image"></p>
<p><img src="https://img2023.cnblogs.com/blog/63651/202302/63651-20230207095815543-694040038.png" alt="" loading="lazy"></p>
<p>图二:</p>
<p><img src="https://img2022.cnblogs.com/blog/1601073/202211/1601073-20221124002224357-522064265.png" alt="" width="1246" height="266" class="medium-zoom-image"></p>
<p>&nbsp;<img src="https://img2023.cnblogs.com/blog/63651/202302/63651-20230207100350490-1125614561.png" alt="" loading="lazy"></p>
<h2>3.2、安装VSCode插件</h2>
<h3>3.2.1、React/Redux/React-Native snippets&nbsp;代码模板/代码片段</h3>
<p><img src="https://img2023.cnblogs.com/blog/63651/202302/63651-20230207105153402-197288964.png" alt="" loading="lazy"></p>
<p>{}和()中的每一个空格都意味着这将被推入下一行:)$表示制表符之后的每一步。</p>
<p>TypeScript有自己的组件和代码段。在每个组件代码段之前使用搜索或键入ts。</p>
<h4 dir="auto">Basic Methods</h4>
<table>
<thead>
<tr><th align="right">Prefix</th><th>Method</th></tr>
</thead>
<tbody>
<tr>
<td align="right"><code>imp→</code></td>
<td><code>import moduleName from 'module'</code></td>
</tr>
<tr>
<td align="right"><code>imn→</code></td>
<td><code>import 'module'</code></td>
</tr>
<tr>
<td align="right"><code>imd→</code></td>
<td><code>import { destructuredModule } from 'module'</code></td>
</tr>
<tr>
<td align="right"><code>ime→</code></td>
<td><code>import * as alias from 'module'</code></td>
</tr>
<tr>
<td align="right"><code>ima→</code></td>
<td><code>import { originalName as aliasName} from 'module'</code></td>
</tr>
<tr>
<td align="right"><code>exp→</code></td>
<td><code>export default moduleName</code></td>
</tr>
<tr>
<td align="right"><code>exd→</code></td>
<td><code>export { destructuredModule } from 'module'</code></td>
</tr>
<tr>
<td align="right"><code>exa→</code></td>
<td><code>export { originalName as aliasName} from 'module'</code></td>
</tr>
<tr>
<td align="right"><code>enf→</code></td>
<td><code>export const functionName = (params) =&gt; { }</code></td>
</tr>
<tr>
<td align="right"><code>edf→</code></td>
<td><code>export default (params) =&gt; { }</code></td>
</tr>
<tr>
<td align="right"><code>ednf→</code></td>
<td><code>export default function functionName(params) { }</code></td>
</tr>
<tr>
<td align="right"><code>met→</code></td>
<td><code>methodName = (params) =&gt; { }</code></td>
</tr>
<tr>
<td align="right"><code>fre→</code></td>
<td><code>arrayName.forEach(element =&gt; { }</code></td>
</tr>
<tr>
<td align="right"><code>fof→</code></td>
<td><code>for(let itemName of objectName { }</code></td>
</tr>
<tr>
<td align="right"><code>fin→</code></td>
<td><code>for(let itemName in objectName { }</code></td>
</tr>
<tr>
<td align="right"><code>anfn→</code></td>
<td><code>(params) =&gt; { }</code></td>
</tr>
<tr>
<td align="right"><code>nfn→</code></td>
<td><code>const functionName = (params) =&gt; { }</code></td>
</tr>
<tr>
<td align="right"><code>dob→</code></td>
<td><code>const {propName} = objectToDescruct</code></td>
</tr>
<tr>
<td align="right"><code>dar→</code></td>
<td><code>const = arrayToDescruct</code></td>
</tr>
<tr>
<td align="right"><code>sti→</code></td>
<td><code>setInterval(() =&gt; { }, intervalTime</code></td>
</tr>
<tr>
<td align="right"><code>sto→</code></td>
<td><code>setTimeout(() =&gt; { }, delayTime</code></td>
</tr>
<tr>
<td align="right"><code>prom→</code></td>
<td><code>return new Promise((resolve, reject) =&gt; { }</code></td>
</tr>
<tr>
<td align="right"><code>cmmb→</code></td>
<td><code>comment block</code></td>
</tr>
<tr>
<td align="right"><code>cp→</code></td>
<td><code>const { } = this.props</code></td>
</tr>
<tr>
<td align="right"><code>cs→</code></td>
<td><code>const { } = this.state</code></td>
</tr>
</tbody>
</table>
<h4 dir="auto">React</h4>
<table>
<thead>
<tr><th align="right">Prefix</th><th>Method</th></tr>
</thead>
<tbody>
<tr>
<td align="right"><code>imr→</code></td>
<td><code>import React from 'react'</code></td>
</tr>
<tr>
<td align="right"><code>imrd→</code></td>
<td><code>import ReactDOM from 'react-dom'</code></td>
</tr>
<tr>
<td align="right"><code>imrc→</code></td>
<td><code>import React, { Component } from 'react'</code></td>
</tr>
<tr>
<td align="right"><code>imrpc→</code></td>
<td><code>import React, { PureComponent } from 'react'</code></td>
</tr>
<tr>
<td align="right"><code>imrm→</code></td>
<td><code>import React, { memo } from 'react'</code></td>
</tr>
<tr>
<td align="right"><code>imrr→</code></td>
<td><code>import { BrowserRouter as Router, Route, NavLink} from 'react-router-dom'</code></td>
</tr>
<tr>
<td align="right"><code>imbr→</code></td>
<td><code>import { BrowserRouter as Router} from 'react-router-dom'</code></td>
</tr>
<tr>
<td align="right"><code>imbrc→</code></td>
<td><code>import { Route, Switch, NavLink, Link } from react-router-dom'</code></td>
</tr>
<tr>
<td align="right"><code>imbrr→</code></td>
<td><code>import { Route } from 'react-router-dom'</code></td>
</tr>
<tr>
<td align="right"><code>imbrs→</code></td>
<td><code>import { Switch } from 'react-router-dom'</code></td>
</tr>
<tr>
<td align="right"><code>imbrl→</code></td>
<td><code>import { Link } from 'react-router-dom'</code></td>
</tr>
<tr>
<td align="right"><code>imbrnl→</code></td>
<td><code>import { NavLink } from 'react-router-dom'</code></td>
</tr>
<tr>
<td align="right"><code>imrs→</code></td>
<td><code>import React, { useState } from 'react'</code></td>
</tr>
<tr>
<td align="right"><code>imrse→</code></td>
<td><code>import React, { useState, useEffect } from 'react'</code></td>
</tr>
<tr>
<td align="right"><code>redux→</code></td>
<td><code>import { connect } from 'react-redux'</code></td>
</tr>
<tr>
<td align="right"><code>est→</code></td>
<td><code>this.state = { }</code></td>
</tr>
<tr>
<td align="right"><code>cdm→</code></td>
<td><code>componentDidMount = () =&gt; { }</code></td>
</tr>
<tr>
<td align="right"><code>scu→</code></td>
<td><code>shouldComponentUpdate = (nextProps, nextState) =&gt; { }</code></td>
</tr>
<tr>
<td align="right"><code>cdup→</code></td>
<td><code>componentDidUpdate = (prevProps, prevState) =&gt; { }</code></td>
</tr>
<tr>
<td align="right"><code>cwun→</code></td>
<td><code>componentWillUnmount = () =&gt; { }</code></td>
</tr>
<tr>
<td align="right"><code>gdsfp→</code></td>
<td><code>static getDerivedStateFromProps(nextProps, prevState) { }</code></td>
</tr>
<tr>
<td align="right"><code>gsbu→</code></td>
<td><code>getSnapshotBeforeUpdate = (prevProps, prevState) =&gt; { }</code></td>
</tr>
<tr>
<td align="right"><code>sst→</code></td>
<td><code>this.setState({ })</code></td>
</tr>
<tr>
<td align="right"><code>ssf→</code></td>
<td><code>this.setState((state, props) =&gt; return { })</code></td>
</tr>
<tr>
<td align="right"><code>props→</code></td>
<td><code>this.props.propName</code></td>
</tr>
<tr>
<td align="right"><code>state→</code></td>
<td><code>this.state.stateName</code></td>
</tr>
<tr>
<td align="right"><code>rcontext→</code></td>
<td><code>const $1 = React.createContext()</code></td>
</tr>
<tr>
<td align="right"><code>cref→</code></td>
<td><code>this.$1Ref = React.createRef()</code></td>
</tr>
<tr>
<td align="right"><code>fref→</code></td>
<td><code>const ref = React.createRef()</code></td>
</tr>
<tr>
<td align="right"><code>bnd→</code></td>
<td><code>this.methodName = this.methodName.bind(this)</code></td>
</tr>
</tbody>
</table>
<h4 dir="auto">React Native</h4>
<table>
<thead>
<tr><th align="right">Prefix</th><th>Method</th></tr>
</thead>
<tbody>
<tr>
<td align="right"><code>imrn→</code></td>
<td><code>import { $1 } from 'react-native'</code></td>
</tr>
<tr>
<td align="right"><code>rnstyle→</code></td>
<td><code>const styles = StyleSheet.create({})</code></td>
</tr>
</tbody>
</table>
<h4 dir="auto">Redux</h4>
<table>
<thead>
<tr><th align="right">Prefix</th><th>Method</th></tr>
</thead>
<tbody>
<tr>
<td align="right"><code>rxaction→</code></td>
<td><code>redux action template</code></td>
</tr>
<tr>
<td align="right"><code>rxconst→</code></td>
<td><code>export const $1 = '$1'</code></td>
</tr>
<tr>
<td align="right"><code>rxreducer→</code></td>
<td><code>redux reducer template</code></td>
</tr>
<tr>
<td align="right"><code>rxselect→</code></td>
<td><code>redux selector template</code></td>
</tr>
<tr>
<td align="right"><code>rxslice→</code></td>
<td><code>redux slice template</code></td>
</tr>
</tbody>
</table>
<h4 dir="auto">PropTypes</h4>
<table>
<thead>
<tr><th align="right">Prefix</th><th>Method</th></tr>
</thead>
<tbody>
<tr>
<td align="right"><code>pta→</code></td>
<td><code>PropTypes.array</code></td>
</tr>
<tr>
<td align="right"><code>ptar→</code></td>
<td><code>PropTypes.array.isRequired</code></td>
</tr>
<tr>
<td align="right"><code>ptb→</code></td>
<td><code>PropTypes.bool</code></td>
</tr>
<tr>
<td align="right"><code>ptbr→</code></td>
<td><code>PropTypes.bool.isRequired</code></td>
</tr>
<tr>
<td align="right"><code>ptf→</code></td>
<td><code>PropTypes.func</code></td>
</tr>
<tr>
<td align="right"><code>ptfr→</code></td>
<td><code>PropTypes.func.isRequired</code></td>
</tr>
<tr>
<td align="right"><code>ptn→</code></td>
<td><code>PropTypes.number</code></td>
</tr>
<tr>
<td align="right"><code>ptnr→</code></td>
<td><code>PropTypes.number.isRequired</code></td>
</tr>
<tr>
<td align="right"><code>pto→</code></td>
<td><code>PropTypes.object</code></td>
</tr>
<tr>
<td align="right"><code>ptor→</code></td>
<td><code>PropTypes.object.isRequired</code></td>
</tr>
<tr>
<td align="right"><code>pts→</code></td>
<td><code>PropTypes.string</code></td>
</tr>
<tr>
<td align="right"><code>ptsr→</code></td>
<td><code>PropTypes.string.isRequired</code></td>
</tr>
<tr>
<td align="right"><code>ptnd→</code></td>
<td><code>PropTypes.node</code></td>
</tr>
<tr>
<td align="right"><code>ptndr→</code></td>
<td><code>PropTypes.node.isRequired</code></td>
</tr>
<tr>
<td align="right"><code>ptel→</code></td>
<td><code>PropTypes.element</code></td>
</tr>
<tr>
<td align="right"><code>ptelr→</code></td>
<td><code>PropTypes.element.isRequired</code></td>
</tr>
<tr>
<td align="right"><code>pti→</code></td>
<td><code>PropTypes.instanceOf(name)</code></td>
</tr>
<tr>
<td align="right"><code>ptir→</code></td>
<td><code>PropTypes.instanceOf(name).isRequired</code></td>
</tr>
<tr>
<td align="right"><code>pte→</code></td>
<td><code>PropTypes.oneOf()</code></td>
</tr>
<tr>
<td align="right"><code>pter→</code></td>
<td><code>PropTypes.oneOf().isRequired</code></td>
</tr>
<tr>
<td align="right"><code>ptet→</code></td>
<td><code>PropTypes.oneOfType()</code></td>
</tr>
<tr>
<td align="right"><code>ptetr→</code></td>
<td><code>PropTypes.oneOfType().isRequired</code></td>
</tr>
<tr>
<td align="right"><code>ptao→</code></td>
<td><code>PropTypes.arrayOf(name)</code></td>
</tr>
<tr>
<td align="right"><code>ptaor→</code></td>
<td><code>PropTypes.arrayOf(name).isRequired</code></td>
</tr>
<tr>
<td align="right"><code>ptoo→</code></td>
<td><code>PropTypes.objectOf(name)</code></td>
</tr>
<tr>
<td align="right"><code>ptoor→</code></td>
<td><code>PropTypes.objectOf(name).isRequired</code></td>
</tr>
<tr>
<td align="right"><code>ptsh→</code></td>
<td><code>PropTypes.shape({ })</code></td>
</tr>
<tr>
<td align="right"><code>ptshr→</code></td>
<td><code>PropTypes.shape({ }).isRequired</code></td>
</tr>
<tr>
<td align="right"><code>ptany→</code></td>
<td><code>PropTypes.any</code></td>
</tr>
<tr>
<td align="right"><code>ptypes→</code></td>
<td><code>static propTypes = {}</code></td>
</tr>
</tbody>
</table>
<h4 dir="auto">Console</h4>
<table>
<thead>
<tr><th>Prefix</th><th>Method</th></tr>
</thead>
<tbody>
<tr>
<td><code>clg→</code></td>
<td><code>console.log(object)</code></td>
</tr>
<tr>
<td><code>clo→</code></td>
<td><code>console.log(`object`, object)</code></td>
</tr>
<tr>
<td><code>clj→</code></td>
<td><code>console.log(`object`, JSON.stringify(object, null, 2))</code></td>
</tr>
<tr>
<td><code>ctm→</code></td>
<td><code>console.time(`timeId`)</code></td>
</tr>
<tr>
<td><code>cte→</code></td>
<td><code>console.timeEnd(`timeId`)</code></td>
</tr>
<tr>
<td><code>cas→</code></td>
<td><code>console.assert(expression,object)</code></td>
</tr>
<tr>
<td><code>ccl→</code></td>
<td><code>console.clear()</code></td>
</tr>
<tr>
<td><code>cco→</code></td>
<td><code>console.count(label)</code></td>
</tr>
<tr>
<td><code>cdi→</code></td>
<td><code>console.dir</code></td>
</tr>
<tr>
<td><code>cer→</code></td>
<td><code>console.error(object)</code></td>
</tr>
<tr>
<td><code>cgr→</code></td>
<td><code>console.group(label)</code></td>
</tr>
<tr>
<td><code>cge→</code></td>
<td><code>console.groupEnd()</code></td>
</tr>
<tr>
<td><code>ctr→</code></td>
<td><code>console.trace(object)</code></td>
</tr>
<tr>
<td><code>cwa→</code></td>
<td><code>console.warn</code></td>
</tr>
<tr>
<td><code>cin→</code></td>
<td><code>console.info</code></td>
</tr>
</tbody>
</table>
<h4 dir="auto">React Components</h4>
<h3 dir="auto"><code>rcc</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React<span class="pl-kos">, <span class="pl-kos">{ <span class="pl-v">Component <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react'

<span class="pl-k">export <span class="pl-k">default <span class="pl-k">class <span class="pl-v">FileName <span class="pl-k">extends <span class="pl-v">Component <span class="pl-kos">{
<span class="pl-en">render<span class="pl-kos">(<span class="pl-kos">) <span class="pl-kos">{
    <span class="pl-k">return <span class="pl-c1">&lt;<span class="pl-ent">div<span class="pl-c1">&gt;$2<span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">div<span class="pl-c1">&gt;
<span class="pl-kos">}
<span class="pl-kos">}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rce</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React<span class="pl-kos">, <span class="pl-kos">{ <span class="pl-v">Component <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react'

<span class="pl-k">export <span class="pl-k">class <span class="pl-v">FileName <span class="pl-k">extends <span class="pl-v">Component <span class="pl-kos">{
<span class="pl-en">render<span class="pl-kos">(<span class="pl-kos">) <span class="pl-kos">{
    <span class="pl-k">return <span class="pl-c1">&lt;<span class="pl-ent">div<span class="pl-c1">&gt;$2<span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">div<span class="pl-c1">&gt;
<span class="pl-kos">}
<span class="pl-kos">}

<span class="pl-k">export <span class="pl-k">default <span class="pl-s1">$1</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rcep</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React<span class="pl-kos">, <span class="pl-kos">{ <span class="pl-v">Component <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-v">PropTypes <span class="pl-k">from <span class="pl-s">'prop-types'

<span class="pl-k">export <span class="pl-k">class <span class="pl-v">FileName <span class="pl-k">extends <span class="pl-v">Component <span class="pl-kos">{
<span class="pl-k">static <span class="pl-c1">propTypes <span class="pl-c1">= <span class="pl-kos">{<span class="pl-kos">}

<span class="pl-en">render<span class="pl-kos">(<span class="pl-kos">) <span class="pl-kos">{
    <span class="pl-k">return <span class="pl-c1">&lt;<span class="pl-ent">div<span class="pl-c1">&gt;$2<span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">div<span class="pl-c1">&gt;
<span class="pl-kos">}
<span class="pl-kos">}

<span class="pl-k">export <span class="pl-k">default <span class="pl-s1">$1</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rpc</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React<span class="pl-kos">, <span class="pl-kos">{ <span class="pl-v">PureComponent <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react'

<span class="pl-k">export <span class="pl-k">default <span class="pl-k">class <span class="pl-v">FileName <span class="pl-k">extends <span class="pl-v">PureComponent <span class="pl-kos">{
<span class="pl-en">render<span class="pl-kos">(<span class="pl-kos">) <span class="pl-kos">{
    <span class="pl-k">return <span class="pl-c1">&lt;<span class="pl-ent">div<span class="pl-c1">&gt;$2<span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">div<span class="pl-c1">&gt;
<span class="pl-kos">}
<span class="pl-kos">}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rpcp</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React<span class="pl-kos">, <span class="pl-kos">{ <span class="pl-v">PureComponent <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-v">PropTypes <span class="pl-k">from <span class="pl-s">'prop-types'

<span class="pl-k">export <span class="pl-k">default <span class="pl-k">class <span class="pl-v">FileName <span class="pl-k">extends <span class="pl-v">PureComponent <span class="pl-kos">{
<span class="pl-k">static <span class="pl-c1">propTypes <span class="pl-c1">= <span class="pl-kos">{<span class="pl-kos">}

<span class="pl-en">render<span class="pl-kos">(<span class="pl-kos">) <span class="pl-kos">{
    <span class="pl-k">return <span class="pl-c1">&lt;<span class="pl-ent">div<span class="pl-c1">&gt;$2<span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">div<span class="pl-c1">&gt;
<span class="pl-kos">}
<span class="pl-kos">}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rpce</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React<span class="pl-kos">, <span class="pl-kos">{ <span class="pl-v">PureComponent <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-v">PropTypes <span class="pl-k">from <span class="pl-s">'prop-types'

<span class="pl-k">export <span class="pl-k">class <span class="pl-v">FileName <span class="pl-k">extends <span class="pl-v">PureComponent <span class="pl-kos">{
<span class="pl-k">static <span class="pl-c1">propTypes <span class="pl-c1">= <span class="pl-kos">{<span class="pl-kos">}

<span class="pl-en">render<span class="pl-kos">(<span class="pl-kos">) <span class="pl-kos">{
    <span class="pl-k">return <span class="pl-c1">&lt;<span class="pl-ent">div<span class="pl-c1">&gt;$2<span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">div<span class="pl-c1">&gt;
<span class="pl-kos">}
<span class="pl-kos">}

<span class="pl-k">export <span class="pl-k">default <span class="pl-v">FileName</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rccp</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React<span class="pl-kos">, <span class="pl-kos">{ <span class="pl-v">Component <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-v">PropTypes <span class="pl-k">from <span class="pl-s">'prop-types'

<span class="pl-k">export <span class="pl-k">default <span class="pl-k">class <span class="pl-v">FileName <span class="pl-k">extends <span class="pl-v">Component <span class="pl-kos">{
<span class="pl-k">static <span class="pl-c1">propTypes <span class="pl-c1">= <span class="pl-kos">{
    <span class="pl-c1">$2: <span class="pl-s1">$3<span class="pl-kos">,
<span class="pl-kos">}

<span class="pl-en">render<span class="pl-kos">(<span class="pl-kos">) <span class="pl-kos">{
    <span class="pl-k">return <span class="pl-c1">&lt;<span class="pl-ent">div<span class="pl-c1">&gt;$4<span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">div<span class="pl-c1">&gt;
<span class="pl-kos">}
<span class="pl-kos">}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rfcp</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-v">PropTypes <span class="pl-k">from <span class="pl-s">'prop-types'

<span class="pl-k">function <span class="pl-en">$1<span class="pl-kos">(<span class="pl-s1">props<span class="pl-kos">) <span class="pl-kos">{
<span class="pl-k">return <span class="pl-c1">&lt;<span class="pl-ent">div<span class="pl-c1">&gt;$0<span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">div<span class="pl-c1">&gt;
<span class="pl-kos">}

<span class="pl-s1">$1<span class="pl-kos">.<span class="pl-c1">propTypes <span class="pl-c1">= <span class="pl-kos">{<span class="pl-kos">}

<span class="pl-k">export <span class="pl-k">default <span class="pl-s1">$1</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rfc</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React <span class="pl-k">from <span class="pl-s">'react'

<span class="pl-k">export <span class="pl-k">default <span class="pl-k">function <span class="pl-en">$1<span class="pl-kos">(<span class="pl-kos">) <span class="pl-kos">{
<span class="pl-k">return <span class="pl-c1">&lt;<span class="pl-ent">div<span class="pl-c1">&gt;$0<span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">div<span class="pl-c1">&gt;
<span class="pl-kos">}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rfce</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React <span class="pl-k">from <span class="pl-s">'react'

<span class="pl-k">function <span class="pl-en">$1<span class="pl-kos">(<span class="pl-kos">) <span class="pl-kos">{
<span class="pl-k">return <span class="pl-c1">&lt;<span class="pl-ent">div<span class="pl-c1">&gt;$0<span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">div<span class="pl-c1">&gt;
<span class="pl-kos">}

<span class="pl-k">export <span class="pl-k">default <span class="pl-s1">$1</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rafcp</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-v">PropTypes <span class="pl-k">from <span class="pl-s">'prop-types'

<span class="pl-k">const <span class="pl-en">$1 <span class="pl-c1">= <span class="pl-kos">(<span class="pl-s1">props<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
<span class="pl-k">return <span class="pl-c1">&lt;<span class="pl-ent">div<span class="pl-c1">&gt;$0<span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">div<span class="pl-c1">&gt;
<span class="pl-kos">}

<span class="pl-en">$1<span class="pl-kos">.<span class="pl-c1">propTypes <span class="pl-c1">= <span class="pl-kos">{<span class="pl-kos">}

<span class="pl-k">export <span class="pl-k">default <span class="pl-en">$1</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rafc</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React <span class="pl-k">from <span class="pl-s">'react'

<span class="pl-k">export <span class="pl-k">const <span class="pl-en">$1 <span class="pl-c1">= <span class="pl-kos">(<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
<span class="pl-k">return <span class="pl-c1">&lt;<span class="pl-ent">div<span class="pl-c1">&gt;$0<span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">div<span class="pl-c1">&gt;
<span class="pl-kos">}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rafce</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React <span class="pl-k">from <span class="pl-s">'react'

<span class="pl-k">const <span class="pl-en">$1 <span class="pl-c1">= <span class="pl-kos">(<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
<span class="pl-k">return <span class="pl-c1">&lt;<span class="pl-ent">div<span class="pl-c1">&gt;$0<span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">div<span class="pl-c1">&gt;
<span class="pl-kos">}

<span class="pl-k">export <span class="pl-k">default <span class="pl-en">$1</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rmc</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React<span class="pl-kos">, <span class="pl-kos">{ <span class="pl-s1">memo <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react'

<span class="pl-k">export <span class="pl-k">default <span class="pl-en">memo<span class="pl-kos">(<span class="pl-k">function <span class="pl-en">$1<span class="pl-kos">(<span class="pl-kos">) <span class="pl-kos">{
<span class="pl-k">return <span class="pl-c1">&lt;<span class="pl-ent">div<span class="pl-c1">&gt;$0<span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">div<span class="pl-c1">&gt;
<span class="pl-kos">}<span class="pl-kos">)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rmcp</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React<span class="pl-kos">, <span class="pl-kos">{ <span class="pl-s1">memo <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-v">PropTypes <span class="pl-k">from <span class="pl-s">'prop-types'

<span class="pl-k">const <span class="pl-s1">$1 <span class="pl-c1">= <span class="pl-en">memo<span class="pl-kos">(<span class="pl-k">function <span class="pl-s1">$1<span class="pl-kos">(<span class="pl-s1">props<span class="pl-kos">) <span class="pl-kos">{
<span class="pl-k">return <span class="pl-c1">&lt;<span class="pl-ent">div<span class="pl-c1">&gt;$0<span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">div<span class="pl-c1">&gt;
<span class="pl-kos">}<span class="pl-kos">)

<span class="pl-s1">$1<span class="pl-kos">.<span class="pl-c1">propTypes <span class="pl-c1">= <span class="pl-kos">{<span class="pl-kos">}

<span class="pl-k">export <span class="pl-k">default <span class="pl-s1">$1</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rcredux</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React<span class="pl-kos">, <span class="pl-kos">{ <span class="pl-v">Component <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-kos">{ <span class="pl-s1">connect <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react-redux'

<span class="pl-k">export <span class="pl-k">class <span class="pl-v">FileName <span class="pl-k">extends <span class="pl-v">Component <span class="pl-kos">{
<span class="pl-en">render<span class="pl-kos">(<span class="pl-kos">) <span class="pl-kos">{
    <span class="pl-k">return <span class="pl-c1">&lt;<span class="pl-ent">div<span class="pl-c1">&gt;$4<span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">div<span class="pl-c1">&gt;
<span class="pl-kos">}
<span class="pl-kos">}

<span class="pl-k">const <span class="pl-en">mapStateToProps <span class="pl-c1">= <span class="pl-kos">(<span class="pl-s1">state<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">(<span class="pl-kos">{<span class="pl-kos">}<span class="pl-kos">)

<span class="pl-k">const <span class="pl-s1">mapDispatchToProps <span class="pl-c1">= <span class="pl-kos">{<span class="pl-kos">}

<span class="pl-k">export <span class="pl-k">default <span class="pl-en">connect<span class="pl-kos">(<span class="pl-en">mapStateToProps<span class="pl-kos">, <span class="pl-s1">mapDispatchToProps<span class="pl-kos">)<span class="pl-kos">(<span class="pl-v">FileName<span class="pl-kos">)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rcreduxp</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React<span class="pl-kos">, <span class="pl-kos">{ <span class="pl-v">Component <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-v">PropTypes <span class="pl-k">from <span class="pl-s">'prop-types'
<span class="pl-k">import <span class="pl-kos">{ <span class="pl-s1">connect <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react-redux'

<span class="pl-k">export <span class="pl-k">class <span class="pl-v">FileName <span class="pl-k">extends <span class="pl-v">Component <span class="pl-kos">{
<span class="pl-k">static <span class="pl-c1">propTypes <span class="pl-c1">= <span class="pl-kos">{
    <span class="pl-c1">$2: <span class="pl-s1">$3<span class="pl-kos">,
<span class="pl-kos">}

<span class="pl-en">render<span class="pl-kos">(<span class="pl-kos">) <span class="pl-kos">{
    <span class="pl-k">return <span class="pl-c1">&lt;<span class="pl-ent">div<span class="pl-c1">&gt;$4<span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">div<span class="pl-c1">&gt;
<span class="pl-kos">}
<span class="pl-kos">}

<span class="pl-k">const <span class="pl-en">mapStateToProps <span class="pl-c1">= <span class="pl-kos">(<span class="pl-s1">state<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">(<span class="pl-kos">{<span class="pl-kos">}<span class="pl-kos">)

<span class="pl-k">const <span class="pl-s1">mapDispatchToProps <span class="pl-c1">= <span class="pl-kos">{<span class="pl-kos">}

<span class="pl-k">export <span class="pl-k">default <span class="pl-en">connect<span class="pl-kos">(<span class="pl-en">mapStateToProps<span class="pl-kos">, <span class="pl-s1">mapDispatchToProps<span class="pl-kos">)<span class="pl-kos">(<span class="pl-v">FileName<span class="pl-kos">)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rfcredux</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React<span class="pl-kos">, <span class="pl-kos">{ <span class="pl-v">Component <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-kos">{ <span class="pl-s1">connect <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react-redux'

<span class="pl-k">export <span class="pl-k">const <span class="pl-v">FileName <span class="pl-c1">= <span class="pl-kos">(<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
<span class="pl-k">return <span class="pl-c1">&lt;<span class="pl-ent">div<span class="pl-c1">&gt;$4<span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">div<span class="pl-c1">&gt;
<span class="pl-kos">}

<span class="pl-k">const <span class="pl-en">mapStateToProps <span class="pl-c1">= <span class="pl-kos">(<span class="pl-s1">state<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">(<span class="pl-kos">{<span class="pl-kos">}<span class="pl-kos">)

<span class="pl-k">const <span class="pl-s1">mapDispatchToProps <span class="pl-c1">= <span class="pl-kos">{<span class="pl-kos">}

<span class="pl-k">export <span class="pl-k">default <span class="pl-en">connect<span class="pl-kos">(<span class="pl-en">mapStateToProps<span class="pl-kos">, <span class="pl-s1">mapDispatchToProps<span class="pl-kos">)<span class="pl-kos">(<span class="pl-v">FileName<span class="pl-kos">)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rfreduxp</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React<span class="pl-kos">, <span class="pl-kos">{ <span class="pl-v">Component <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-v">PropTypes <span class="pl-k">from <span class="pl-s">'prop-types'
<span class="pl-k">import <span class="pl-kos">{ <span class="pl-s1">connect <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react-redux'

<span class="pl-k">export <span class="pl-k">const <span class="pl-v">FileName <span class="pl-c1">= <span class="pl-kos">(<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
<span class="pl-k">return <span class="pl-c1">&lt;<span class="pl-ent">div<span class="pl-c1">&gt;$4<span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">div<span class="pl-c1">&gt;
<span class="pl-kos">}

<span class="pl-v">FileName<span class="pl-kos">.<span class="pl-c1">propTypes <span class="pl-c1">= <span class="pl-kos">{
<span class="pl-c1">$2: <span class="pl-s1">$3<span class="pl-kos">,
<span class="pl-kos">}

<span class="pl-k">const <span class="pl-en">mapStateToProps <span class="pl-c1">= <span class="pl-kos">(<span class="pl-s1">state<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">(<span class="pl-kos">{<span class="pl-kos">}<span class="pl-kos">)

<span class="pl-k">const <span class="pl-s1">mapDispatchToProps <span class="pl-c1">= <span class="pl-kos">{<span class="pl-kos">}

<span class="pl-k">export <span class="pl-k">default <span class="pl-en">connect<span class="pl-kos">(<span class="pl-en">mapStateToProps<span class="pl-kos">, <span class="pl-s1">mapDispatchToProps<span class="pl-kos">)<span class="pl-kos">(<span class="pl-v">FileName<span class="pl-kos">)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>reduxmap</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">const <span class="pl-en">mapStateToProps <span class="pl-c1">= <span class="pl-kos">(<span class="pl-s1">state<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">(<span class="pl-kos">{<span class="pl-kos">}<span class="pl-kos">)

<span class="pl-k">const <span class="pl-s1">mapDispatchToProps <span class="pl-c1">= <span class="pl-kos">{<span class="pl-kos">}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h4 dir="auto">React Native Components</h4>
<h3 dir="auto"><code>rnc</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React<span class="pl-kos">, <span class="pl-kos">{ <span class="pl-v">Component <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-kos">{ <span class="pl-v">Text<span class="pl-kos">, <span class="pl-v">View <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react-native'

<span class="pl-k">export <span class="pl-k">default <span class="pl-k">class <span class="pl-v">FileName <span class="pl-k">extends <span class="pl-v">Component <span class="pl-kos">{
<span class="pl-en">render<span class="pl-kos">(<span class="pl-kos">) <span class="pl-kos">{
    <span class="pl-k">return <span class="pl-kos">(
      <span class="pl-c1">&lt;<span class="pl-ent">View<span class="pl-c1">&gt;
      <span class="pl-c1">&lt;<span class="pl-ent">Text<span class="pl-c1">&gt; $2 <span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">Text<span class="pl-c1">&gt;
      <span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">View<span class="pl-c1">&gt;
    <span class="pl-kos">)
<span class="pl-kos">}
<span class="pl-kos">}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rnf</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-kos">{ <span class="pl-v">View<span class="pl-kos">, <span class="pl-v">Text <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react-native'

<span class="pl-k">export <span class="pl-k">default <span class="pl-k">function <span class="pl-en">$1<span class="pl-kos">(<span class="pl-kos">) <span class="pl-kos">{
<span class="pl-k">return <span class="pl-kos">(
    <span class="pl-c1">&lt;<span class="pl-ent">View<span class="pl-c1">&gt;
      <span class="pl-c1">&lt;<span class="pl-ent">Text<span class="pl-c1">&gt; $2 <span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">Text<span class="pl-c1">&gt;
    <span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">View<span class="pl-c1">&gt;
<span class="pl-kos">)
<span class="pl-kos">}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rnfs</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-kos">{ <span class="pl-v">StyleSheet<span class="pl-kos">, <span class="pl-v">View<span class="pl-kos">, <span class="pl-v">Text <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react-native'

<span class="pl-k">export <span class="pl-k">default <span class="pl-k">function <span class="pl-en">$1<span class="pl-kos">(<span class="pl-kos">) <span class="pl-kos">{
<span class="pl-k">return <span class="pl-kos">(
    <span class="pl-c1">&lt;<span class="pl-ent">View<span class="pl-c1">&gt;
      <span class="pl-c1">&lt;<span class="pl-ent">Text<span class="pl-c1">&gt; $2 <span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">Text<span class="pl-c1">&gt;
    <span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">View<span class="pl-c1">&gt;
<span class="pl-kos">)
<span class="pl-kos">}

<span class="pl-k">const <span class="pl-s1">styles <span class="pl-c1">= <span class="pl-v">StyleSheet<span class="pl-kos">.<span class="pl-en">create<span class="pl-kos">(<span class="pl-kos">{<span class="pl-kos">}<span class="pl-kos">)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rnfe</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-kos">{ <span class="pl-v">View<span class="pl-kos">, <span class="pl-v">Text <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react-native'

<span class="pl-k">const <span class="pl-en">$1 <span class="pl-c1">= <span class="pl-kos">(<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
<span class="pl-k">return <span class="pl-kos">(
    <span class="pl-c1">&lt;<span class="pl-ent">View<span class="pl-c1">&gt;
      <span class="pl-c1">&lt;<span class="pl-ent">Text<span class="pl-c1">&gt; $2 <span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">Text<span class="pl-c1">&gt;
    <span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">View<span class="pl-c1">&gt;
<span class="pl-kos">)
<span class="pl-kos">}

<span class="pl-k">export <span class="pl-k">default <span class="pl-en">$1</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rnfes</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-kos">{ <span class="pl-v">StyleSheet<span class="pl-kos">, <span class="pl-v">View<span class="pl-kos">, <span class="pl-v">Text <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react-native'

<span class="pl-k">const <span class="pl-en">$1 <span class="pl-c1">= <span class="pl-kos">(<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
<span class="pl-k">return <span class="pl-kos">(
    <span class="pl-c1">&lt;<span class="pl-ent">View<span class="pl-c1">&gt;
      <span class="pl-c1">&lt;<span class="pl-ent">Text<span class="pl-c1">&gt; $2 <span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">Text<span class="pl-c1">&gt;
    <span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">View<span class="pl-c1">&gt;
<span class="pl-kos">)
<span class="pl-kos">}

<span class="pl-k">export <span class="pl-k">default <span class="pl-en">$1

<span class="pl-k">const <span class="pl-s1">styles <span class="pl-c1">= <span class="pl-v">StyleSheet<span class="pl-kos">.<span class="pl-en">create<span class="pl-kos">(<span class="pl-kos">{<span class="pl-kos">}<span class="pl-kos">)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rncs</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React<span class="pl-kos">, <span class="pl-kos">{ <span class="pl-v">Component <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-kos">{ <span class="pl-v">Text<span class="pl-kos">, <span class="pl-v">StyleSheet<span class="pl-kos">, <span class="pl-v">View <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react-native'

<span class="pl-k">export <span class="pl-k">default <span class="pl-k">class <span class="pl-v">FileName <span class="pl-k">extends <span class="pl-v">Component <span class="pl-kos">{
<span class="pl-en">render<span class="pl-kos">(<span class="pl-kos">) <span class="pl-kos">{
    <span class="pl-k">return <span class="pl-kos">(
      <span class="pl-c1">&lt;<span class="pl-ent">View<span class="pl-c1">&gt;
      <span class="pl-c1">&lt;<span class="pl-ent">Text<span class="pl-c1">&gt; $2 <span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">Text<span class="pl-c1">&gt;
      <span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">View<span class="pl-c1">&gt;
    <span class="pl-kos">)
<span class="pl-kos">}
<span class="pl-kos">}

<span class="pl-k">const <span class="pl-s1">styles <span class="pl-c1">= <span class="pl-v">StyleSheet<span class="pl-kos">.<span class="pl-en">create<span class="pl-kos">(<span class="pl-kos">{<span class="pl-kos">}<span class="pl-kos">)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>rnce</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React<span class="pl-kos">, <span class="pl-kos">{ <span class="pl-v">Component <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-kos">{ <span class="pl-v">Text<span class="pl-kos">, <span class="pl-v">View <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react-native'

<span class="pl-k">export <span class="pl-k">class <span class="pl-v">FileName <span class="pl-k">extends <span class="pl-v">Component <span class="pl-kos">{
<span class="pl-en">render<span class="pl-kos">(<span class="pl-kos">) <span class="pl-kos">{
    <span class="pl-k">return <span class="pl-kos">(
      <span class="pl-c1">&lt;<span class="pl-ent">View<span class="pl-c1">&gt;
      <span class="pl-c1">&lt;<span class="pl-ent">Text<span class="pl-c1">&gt; $2 <span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">Text<span class="pl-c1">&gt;
      <span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">View<span class="pl-c1">&gt;
    <span class="pl-kos">)
<span class="pl-kos">}
<span class="pl-kos">}

<span class="pl-k">export <span class="pl-k">default <span class="pl-s1">$1</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h4 dir="auto">Others</h4>
<h3 dir="auto"><code>cmmb</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-c">/**
<span class="pl-c">|--------------------------------------------------
<span class="pl-c">| $1
<span class="pl-c">|--------------------------------------------------
<span class="pl-c">*/</span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>desc</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-en">describe<span class="pl-kos">(<span class="pl-s">'$1'<span class="pl-kos">, <span class="pl-kos">(<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
<span class="pl-s1">$2
<span class="pl-kos">}<span class="pl-kos">)</span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>test</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-en">test<span class="pl-kos">(<span class="pl-s">'should $1'<span class="pl-kos">, <span class="pl-kos">(<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
<span class="pl-s1">$2
<span class="pl-kos">}<span class="pl-kos">)</span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>tit</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-en">it<span class="pl-kos">(<span class="pl-s">'should $1'<span class="pl-kos">, <span class="pl-kos">(<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
<span class="pl-s1">$2
<span class="pl-kos">}<span class="pl-kos">)</span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>stest</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-s1">renderer <span class="pl-k">from <span class="pl-s">'react-test-renderer'

<span class="pl-k">import <span class="pl-kos">{ <span class="pl-s1">$1 <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'../$1'

<span class="pl-en">describe<span class="pl-kos">(<span class="pl-s">'&lt;$1 /&gt;'<span class="pl-kos">, <span class="pl-kos">(<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
<span class="pl-k">const <span class="pl-s1">defaultProps <span class="pl-c1">= <span class="pl-kos">{<span class="pl-kos">}
<span class="pl-k">const <span class="pl-s1">wrapper <span class="pl-c1">= <span class="pl-s1">renderer<span class="pl-kos">.<span class="pl-en">create<span class="pl-kos">(<span class="pl-c1">&lt;<span class="pl-ent">$1 <span class="pl-kos">{...<span class="pl-s1">defaultProps<span class="pl-kos">} <span class="pl-c1">/<span class="pl-c1">&gt;<span class="pl-kos">)

<span class="pl-en">test<span class="pl-kos">(<span class="pl-s">'render'<span class="pl-kos">, <span class="pl-kos">(<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
    <span class="pl-en">expect<span class="pl-kos">(<span class="pl-s1">wrapper<span class="pl-kos">)<span class="pl-kos">.<span class="pl-en">toMatchSnapshot<span class="pl-kos">(<span class="pl-kos">)
<span class="pl-kos">}<span class="pl-kos">)
<span class="pl-kos">}<span class="pl-kos">)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>srtest</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-s1">renderer <span class="pl-k">from <span class="pl-s">'react-test-renderer'
<span class="pl-k">import <span class="pl-kos">{ <span class="pl-v">Provider <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react-redux'

<span class="pl-k">import <span class="pl-s1">store <span class="pl-k">from <span class="pl-s">'src/store'
<span class="pl-k">import <span class="pl-kos">{ <span class="pl-s1">$1 <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'../$1'

<span class="pl-en">describe<span class="pl-kos">(<span class="pl-s">'&lt;$1 /&gt;'<span class="pl-kos">, <span class="pl-kos">(<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
<span class="pl-k">const <span class="pl-s1">defaultProps <span class="pl-c1">= <span class="pl-kos">{<span class="pl-kos">}
<span class="pl-k">const <span class="pl-s1">wrapper <span class="pl-c1">= <span class="pl-s1">renderer<span class="pl-kos">.<span class="pl-en">create<span class="pl-kos">(
    <span class="pl-c1">&lt;<span class="pl-ent">Provider <span class="pl-c1">store<span class="pl-c1">=<span class="pl-kos">{<span class="pl-s1">store<span class="pl-kos">}<span class="pl-c1">&gt;
      <span class="pl-c1">&lt;<span class="pl-ent">$1 <span class="pl-kos">{...<span class="pl-s1">defaultProps<span class="pl-kos">} <span class="pl-c1">/<span class="pl-c1">&gt;)
    <span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">Provider<span class="pl-c1">&gt;<span class="pl-kos">,
<span class="pl-kos">)

<span class="pl-en">test<span class="pl-kos">(<span class="pl-s">'render'<span class="pl-kos">, <span class="pl-kos">(<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
    <span class="pl-en">expect<span class="pl-kos">(<span class="pl-s1">wrapper<span class="pl-kos">)<span class="pl-kos">.<span class="pl-en">toMatchSnapshot<span class="pl-kos">(<span class="pl-kos">)
<span class="pl-kos">}<span class="pl-kos">)
<span class="pl-kos">}<span class="pl-kos">)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>sntest</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-s">'react-native'
<span class="pl-k">import <span class="pl-v">React <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-s1">renderer <span class="pl-k">from <span class="pl-s">'react-test-renderer'

<span class="pl-k">import <span class="pl-s1">$1 <span class="pl-k">from <span class="pl-s">'../$1'

<span class="pl-en">describe<span class="pl-kos">(<span class="pl-s">'&lt;$1 /&gt;'<span class="pl-kos">, <span class="pl-kos">(<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
<span class="pl-k">const <span class="pl-s1">defaultProps <span class="pl-c1">= <span class="pl-kos">{<span class="pl-kos">}

<span class="pl-k">const <span class="pl-s1">wrapper <span class="pl-c1">= <span class="pl-s1">renderer<span class="pl-kos">.<span class="pl-en">create<span class="pl-kos">(<span class="pl-c1">&lt;<span class="pl-ent">$1 <span class="pl-kos">{...<span class="pl-s1">defaultProps<span class="pl-kos">} <span class="pl-c1">/<span class="pl-c1">&gt;<span class="pl-kos">)

<span class="pl-en">test<span class="pl-kos">(<span class="pl-s">'render'<span class="pl-kos">, <span class="pl-kos">(<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
    <span class="pl-en">expect<span class="pl-kos">(<span class="pl-s1">wrapper<span class="pl-kos">)<span class="pl-kos">.<span class="pl-en">toMatchSnapshot<span class="pl-kos">(<span class="pl-kos">)
<span class="pl-kos">}<span class="pl-kos">)
<span class="pl-kos">}<span class="pl-kos">)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>snrtest</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-s">'react-native'
<span class="pl-k">import <span class="pl-v">React <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-s1">renderer <span class="pl-k">from <span class="pl-s">'react-test-renderer'
<span class="pl-k">import <span class="pl-kos">{ <span class="pl-v">Provider <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react-redux'

<span class="pl-k">import <span class="pl-s1">store <span class="pl-k">from <span class="pl-s">'src/store/configureStore'
<span class="pl-k">import <span class="pl-s1">$1 <span class="pl-k">from <span class="pl-s">'../$1'

<span class="pl-en">describe<span class="pl-kos">(<span class="pl-s">'&lt;$1 /&gt;'<span class="pl-kos">, <span class="pl-kos">(<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
<span class="pl-k">const <span class="pl-s1">defaultProps <span class="pl-c1">= <span class="pl-kos">{<span class="pl-kos">}
<span class="pl-k">const <span class="pl-s1">wrapper <span class="pl-c1">= <span class="pl-s1">renderer<span class="pl-kos">.<span class="pl-en">create<span class="pl-kos">(
    <span class="pl-c1">&lt;<span class="pl-ent">Provider <span class="pl-c1">store<span class="pl-c1">=<span class="pl-kos">{<span class="pl-s1">store<span class="pl-kos">}<span class="pl-c1">&gt;
      <span class="pl-c1">&lt;<span class="pl-ent">$1 <span class="pl-kos">{...<span class="pl-s1">defaultProps<span class="pl-kos">} <span class="pl-c1">/<span class="pl-c1">&gt;
    <span class="pl-c1">&lt;<span class="pl-c1">/<span class="pl-ent">Provider<span class="pl-c1">&gt;<span class="pl-kos">,
<span class="pl-kos">)

<span class="pl-en">test<span class="pl-kos">(<span class="pl-s">'render'<span class="pl-kos">, <span class="pl-kos">(<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
    <span class="pl-en">expect<span class="pl-kos">(<span class="pl-s1">wrapper<span class="pl-kos">)<span class="pl-kos">.<span class="pl-en">toMatchSnapshot<span class="pl-kos">(<span class="pl-kos">)
<span class="pl-kos">}<span class="pl-kos">)
<span class="pl-kos">}<span class="pl-kos">)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>hocredux</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-v">PropTypes <span class="pl-k">from <span class="pl-s">'prop-types'
<span class="pl-k">import <span class="pl-kos">{ <span class="pl-s1">connect <span class="pl-kos">} <span class="pl-k">from <span class="pl-s">'react-redux'

<span class="pl-k">export <span class="pl-k">const <span class="pl-en">mapStateToProps <span class="pl-c1">= <span class="pl-kos">(<span class="pl-s1">state<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">(<span class="pl-kos">{<span class="pl-kos">}<span class="pl-kos">)

<span class="pl-k">export <span class="pl-k">const <span class="pl-s1">mapDispatchToProps <span class="pl-c1">= <span class="pl-kos">{<span class="pl-kos">}

<span class="pl-k">export <span class="pl-k">const <span class="pl-en">$1 <span class="pl-c1">= <span class="pl-kos">(<span class="pl-v">WrappedComponent<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
<span class="pl-k">const <span class="pl-en">hocComponent <span class="pl-c1">= <span class="pl-kos">(<span class="pl-kos">{ ...<span class="pl-s1">props <span class="pl-kos">}<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-c1">&lt;<span class="pl-v">WrappedComponent <span class="pl-kos">{...<span class="pl-s1">props<span class="pl-kos">} <span class="pl-c1">/<span class="pl-c1">&gt;

<span class="pl-en">hocComponent<span class="pl-kos">.<span class="pl-c1">propTypes <span class="pl-c1">= <span class="pl-kos">{<span class="pl-kos">}

<span class="pl-k">return <span class="pl-en">hocComponent
<span class="pl-kos">}

<span class="pl-k">export <span class="pl-k">default <span class="pl-kos">(<span class="pl-v">WrapperComponent<span class="pl-kos">) <span class="pl-c1">=&gt;
<span class="pl-en">connect<span class="pl-kos">(<span class="pl-en">mapStateToProps<span class="pl-kos">, <span class="pl-s1">mapDispatchToProps<span class="pl-kos">)<span class="pl-kos">(<span class="pl-en">$1<span class="pl-kos">(<span class="pl-v">WrapperComponent<span class="pl-kos">)<span class="pl-kos">)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3 dir="auto"><code>hoc</code></h3>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto">
<pre><span class="pl-k">import <span class="pl-v">React <span class="pl-k">from <span class="pl-s">'react'
<span class="pl-k">import <span class="pl-v">PropTypes <span class="pl-k">from <span class="pl-s">'prop-types'

<span class="pl-k">export <span class="pl-k">default <span class="pl-kos">(<span class="pl-v">WrappedComponent<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-kos">{
<span class="pl-k">const <span class="pl-en">hocComponent <span class="pl-c1">= <span class="pl-kos">(<span class="pl-kos">{ ...<span class="pl-s1">props <span class="pl-kos">}<span class="pl-kos">) <span class="pl-c1">=&gt; <span class="pl-c1">&lt;<span class="pl-v">WrappedComponent <span class="pl-kos">{...<span class="pl-s1">props<span class="pl-kos">} <span class="pl-c1">/<span class="pl-c1">&gt;

<span class="pl-en">hocComponent<span class="pl-kos">.<span class="pl-c1">propTypes <span class="pl-c1">= <span class="pl-kos">{<span class="pl-kos">}

<span class="pl-k">return <span class="pl-en">hocComponent
<span class="pl-kos">}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre>
</div>
<h3>3.2.2、Simple React Snippets&nbsp;更加简洁的代码片段</h3>
<h3><img src="https://img2023.cnblogs.com/blog/63651/202302/63651-20230207111215610-1770506289.png" alt="" loading="lazy"></h3>
<h4 id="snippets">Snippets</h4>
<table>
<thead>
<tr><th>Snippet</th><th>Renders</th></tr>
</thead>
<tbody>
<tr>
<td><code>imr</code></td>
<td>Import React</td>
</tr>
<tr>
<td><code>imrc</code></td>
<td>Import React / Component</td>
</tr>
<tr>
<td><code>imrd</code></td>
<td>Import ReactDOM</td>
</tr>
<tr>
<td><code>imrs</code></td>
<td>Import React / useState</td>
</tr>
<tr>
<td><code>imrse</code></td>
<td>Import React / useState useEffect</td>
</tr>
<tr>
<td><code>impt</code></td>
<td>Import PropTypes</td>
</tr>
<tr>
<td><code>impc</code></td>
<td>Import React / PureComponent</td>
</tr>
<tr>
<td><code>cc</code></td>
<td>Class Component</td>
</tr>
<tr>
<td><code>ccc</code></td>
<td>Class Component With Constructor</td>
</tr>
<tr>
<td><code>cpc</code></td>
<td>Class Pure Component</td>
</tr>
<tr>
<td><code>ffc</code></td>
<td>Function Component</td>
</tr>
<tr>
<td><code>sfc</code></td>
<td>Stateless Function Component (Arrow function)</td>
</tr>
<tr>
<td><code>cdm</code></td>
<td>componentDidMount</td>
</tr>
<tr>
<td><code>uef</code></td>
<td>useEffect Hook</td>
</tr>
<tr>
<td><code>cwm</code></td>
<td>componentWillMount</td>
</tr>
<tr>
<td><code>cwrp</code></td>
<td>componentWillReceiveProps</td>
</tr>
<tr>
<td><code>gds</code></td>
<td>getDerivedStateFromProps</td>
</tr>
<tr>
<td><code>scu</code></td>
<td>shouldComponentUpdate</td>
</tr>
<tr>
<td><code>cwu</code></td>
<td>componentWillUpdate</td>
</tr>
<tr>
<td><code>cdu</code></td>
<td>componentDidUpdate</td>
</tr>
<tr>
<td><code>cwun</code></td>
<td>componentWillUnmount</td>
</tr>
<tr>
<td><code>cdc</code></td>
<td>componentDidCatch</td>
</tr>
<tr>
<td><code>gsbu</code></td>
<td>getSnapshotBeforeUpdate</td>
</tr>
<tr>
<td><code>ss</code></td>
<td>setState</td>
</tr>
<tr>
<td><code>ssf</code></td>
<td>Functional setState</td>
</tr>
<tr>
<td><code>usf</code></td>
<td>Declare a new state variable using State Hook</td>
</tr>
<tr>
<td><code>ren</code></td>
<td>render</td>
</tr>
<tr>
<td><code>rprop</code></td>
<td>Render Prop</td>
</tr>
<tr>
<td><code>hoc</code></td>
<td>Higher Order Component</td>
</tr>
<tr>
<td><code>cp</code></td>
<td>Context Provider</td>
</tr>
<tr>
<td><code>cpf</code></td>
<td>Class Property Function</td>
</tr>
</tbody>
</table>
<h1>四、作业</h1>
<p>4.1、在Web端完成一个输出Hello World信息到网页的程序,非JSX。</p>
<p>4.2、在Web端完成一个输出Hello World信息到网页的程序,使用JSX。</p>
<p>4.3、使用脚手架创建一个React项目,使用VSCode打开,动态显示当前日期时间,每秒显示一次,安装好开发者工具(React Developer Tools),安装好代码提示片段插件。</p>
<p>4.4、完成一个购物车:</p>
<p><img src="https://img2023.cnblogs.com/blog/63651/202302/63651-20230207112145836-1656884302.png" alt="" loading="lazy"></p>
<p>4.5、将官网首页的demo复现。https://zh-hans.reactjs.org/</p>
<h1>五、视频</h1>
<p>&nbsp;&nbsp;https://www.bilibili.com/video/BV1Vb411D7qa/?share_source=copy_web&amp;vd_source=475a31f3c5d6353a782007cd4c638a8a</p><br><br>
来源:https://www.cnblogs.com/best/p/16992998.html
頁: [1]
查看完整版本: React学习笔记(一)—— React快速入门