独立 React.js 基本示例


让我们首先从编写简单的 HTML 代码开始,看看如何使用 React

基本 React 示例 - 创建一个简单的 div 如下所示:

<div class="player">
   <h1>Steve</h1>
   <p>My hobby: Cricket</p>
</div>

添加一些样式元素

.player{
   border:1px solid #eee;
   width:200px;
   box-shadow:0 2px 2px #ccc;
   padding: 22px;
   display:inline-block;
   margin:10px;
}

这就像 Web 应用中的普通 html 数据一样。现在,我们可能有许多相同的播放器,然后我们必须像下面这样复制相同的 div

<div class="player">
   <h1>David</h1>
   <p>My hobby: Cricket</p>
</div>

这些 div 在结构上相同,但内部包含不同的数据。在这里,React 非常有用,它可以为我们创建可重用的组件,以避免重复的 html 结构并对组件执行逻辑操作。

让我们添加 React

对于基本用法,我们将使用独立的 React 库。

我们将必须使用两个主要的库脚本:

注意 - 部署时,将“development.js”替换为“production.min.js”

以下脚本用于创建组件并在其上执行操作。

<script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>

react-dom 脚本用于将实际组件渲染到 html dom

<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>

我们还将使用独立的 babel 预处理器来编译最新的 JavaScript

<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>

React 使用 JavaScript 的一种特殊语法,称为 jsx,它看起来非常类似于 html 本身。所以让我们创建一个 React 函数组件。

函数组件的名称以大写字母开头以使其正常工作。

function Player(){
   return(
      <div class="player">
         <h1>Steve</h1>
         <p>My hobby: Cricket</p>
      </div>
   );
}

所以在实际的 html 文件中,我们可以用下面的 div 替换第一个 div 播放器:

<div id="first"></div>

现在,我们必须使用 ReactDOM 将组件渲染到 html,如下所示:

渲染方法需要 React 组件作为参数以及它需要在 html 上渲染的位置。

ReactDOM.render(<Player/>,document.querySelector('#first'));

函数组件用作第一个参数,就像 html 标签一样。渲染方法的第二个参数可以是 html 元素选择器。

如果我们将所有这些部分放在一起,我们可以拥有以下 html 文件进行测试:

<!DOCTYPE html>
<html>
<head>
<title>React Example</title>
<style>
   .player{
      border:1px solid #eee;
      width:200px;
      box-shadow:0 2px 2px #ccc;
      padding: 22px;
      display:inline-block;
      margin:10px;
   }
</style>
</head>
<body>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<!-- Load React. -->
<!-- Note: when deploying, replace "development.js" with "production.min.js". -->
<script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
<div id="first"></div>
<div class="player">
<h1>David</h1>
<p>My hobby: Cricket</p>
</div>
<script type="text/babel">
   function Player(){
      return(
         <div className="player">
            <h1>Steve</h1>
            <p>My hobby: Cricket</p>
         </div>
      );
   }
   ReactDOM.render(<Player/>,document.querySelector('#first'));
</script>
</body>
</html>

它实际上不可重用,因为我们使用的第二个播放器 div 仍然不是来自 React 组件。为了使其可重用,我们必须使用带有名为 props 的参数的动态函数,如下所示:

function Player(props){
   <div className="player">
      <h1>{props.name}</h1>
      <p>My hobby: {props.hobby}</p>
   </div>
}

参数 props 包含播放器的属性。现在,我们可以为第二个播放器创建较小的替换 div,如下所示:

<div id="second"></div>

我们将像下面这样在渲染方法中传递播放器属性:

ReactDOM.render(
   <Player name="Steve" hobbey="Cricket"/>,
   document.querySelector('#first')
);
ReactDOM.render(
   <Player name="David" hobbey="Cricket"/>,
   document.querySelector('#second')
);

现在,您已经观察到可重用 React 组件的潜力。

而不是有两个单独的 ReactDOM.render,我们可以将它们组合在一起

//we can have only one div in html
<div id="app"></div>
//and in react script we can have:
var app= (
   <div>
      <Player name="Steve" hobbey="Cricket"/>
      <Player name="David" hobbey="Cricket"/>
   </div>
);
//Now, we will map our app component using ReactDOM:
ReactDOM.render(app,document.querySelector('#app'));

基本 React 示例 - 最终 HTML 将如下所示

<!DOCTYPE html>
<html>
<head>
<title>React Example</title>
<style>
   .player{
      border:1px solid #eee;
      width:200px;
      box-shadow:0 2px 2px #ccc;
      padding: 22px;
      display:inline-block;
      margin:10px;
   }
</style>
</head>
<body>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<!-- Load React. -->
<!-- Note: when deploying, replace "development.js" with "production.min.js". -->
<script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
<div id="app"></div>
<script type="text/babel">
   function Player(props){
      //it returns the reusable code that
      //we want to render on actual html page
      return(
         //we are adding the first player div info
         <div className="player">
            <h1>{props.name}</h1>
            <p>My hobby: {props.hobby}</p>
         </div>
      );
   }
   var app= (
      <div>
         <Player name="Steve" hobbey="Cricket"/>
         <Player name="David" hobbey="Cricket"/>
      </div>
   );
   ReactDOM.render(app,document.querySelector('#app'));
</script>
</body>
</html>

更新于:2020-07-03

2K+ 阅读量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告