将 jQuery 代码迁移到 React.js

发布日期:2026-07-03 21:00:04   来源 : 杭州电子商务研究院    浏览量 :11
杭州电子商务研究院 发布日期:2026-07-03 21:00:04  
11

介绍

jQuery 是一个广泛使用的 JavaScript 框架,用于前端 Web 开发。它的主要优势包括轻松引用 DOM 元素、将可操作项应用于元素(例如单击按钮时的逻辑)以及可扩展性,已有各种库。然而,jQuery 倾向于做很多标准 JavaScript 已经可以做的事情。此外,状态管理尚未成熟,而 React.js 已经将其作为主要功能解决了这个问题。

Github 等公司开始从 jQuery 转向其他东西,甚至是原生 JavaScript。如果您计划将现有的 jQuery 代码慢慢过渡到 React.js,本指南将向您展示您可能需要注意的一些事项。

引用 DOM 元素

jQuery 和 React.js 都引用目标 DOM 元素来添加额外的处理,但它们的方法根本不同。给定以下 HTML:

      <button id="btn-click">
  Click Me
</button>
    

各个 JavaScript 框架如何附加可点击的功能逻辑?

jQuery

      var $btnClick = $("#btn-click");

$btnClick.on("click", function() {
  alert("Button was clicked!");
});
    

正如您在 jQuery 中看到的,开发人员必须首先使用$()函数引用 DOM 元素,并传递 id 引用#或类引用.。然后将点击事件处理程序作为第一个参数字符串传递给查询元素的on()函数调用。第二个参数是函数本身,在本例中只是警告“按钮被点击了!”

React.js

如果在 jQuery 中,JavaScript 与 HTML 元素分开处理(因此有“查询”部分),那么 React.js 会将呈现的 HTML UI 视为容器的一部分,即所谓的组件。该组件将包含在目标<div>中呈现的所有必要元素。<button>元素本身不会成为初始 HTML 的一部分。相反,您可能有以下<div>元素:

      <div id="react-root"></div>
    

首先,您必须在单独的 JavaScript 文件中定义一个呈现按钮的组件:

      import React from 'react';

export default class ButtonComponent extends React.Component {
  constructor(props) {
    super(props);
  }

  handleButtonClicked() {
    alert("Button was clicked!");
  }

  render() {
    return (
      <div>
        <button onClick={this.handleButtonClicked.bind(this)}>
          Click Me
        </button>
      </div>
    );
  }
}
    

组件要呈现的所有 HTML 元素都以 JSX 的形式返回,JSX 是 JavaScript 的扩展,允许在 React.js 中声明类似 HTML 的元素来定义如何呈现界面。请注意,没有为<button>元素设置id属性。而是附加一个指向handleButtonClicked()方法定义的事件处理程序。包含一个.bind(this)以允许在整个函数调用过程中保留this的值。这是一种传递组件实例本身的方法,它公开了React.Component固有的其他方法(如setState() )或用户定义的方法。可以说不需要明确的引用。与 jQuery 相比,主要区别在于 React.js 组件将存储其所有的 UI 需求,而 jQuery 则假定 UI 元素以 HTML 形式呈现。

管理国家

在页面中管理 JavaScript 变量的值可能会变得很麻烦。例如,假设您的应用程序中有一个名为message的变量,表示一个喊话。您希望将该消息显示在容器<div>中,如下所示:

      <div id="message">Message goes here</div>
    

jQuery

在 jQuery 方法中,所有内容仍从上到下读取。您可能有以下代码首先提取当前消息:

      var message = $("#message").html();
    

要更新消息,您必须再次引用 <div>插入新值:

      var message = "New message"; // Normally set by some other logical routine

$("#message").html(message);
    

这种方法的一个缺点是必须多次设置消息 — 一次用于提取值,另一次用于为其分配新值。此外,需要额外的代码将消息插回到目标<div>。这往往会变得混乱,特别是如果您有另一个可能为消息设置新值的例程。在这种情况下,您必须再次调用$("#message").html(message)

React.js

React.js 通过组件的state维护变量的单个实例来解决此问题。每个 React.js 组件都将在其中定义一个state对象,并在组件的构造函数中初始化。例如,假设您想要维护相同的消息值,并且任何会影响其值的逻辑例程都会自动反映在组件的 UI 中。您可能有以下内容:

      import React from 'react';

export default class MessageComponent extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      message: ""
    }
  }

  updateMessage(message) {
    this.setState({
      message: message
    });
  }

  render() {
    return (
      <div>
        {this.state.message}
      </div>
    );
  }
}
    

请注意,您最初在构造函数中在组件的状态中设置了消息。该组件有一个名为updateMessage(message)的方法,该方法又调用组件的setState()方法来更新message的值。这里的想法是,每次调用setState()时,组件都会按照render()中的调用重新渲染 UI ,因为render()返回的 JSX通过this.state.message显示消息,无论它当前具有什么值。

结论

React.js 乍一看可能很复杂,但从长期可维护性来看,它倾向于使用适当的状态管理来保持一切井然有序。jQuery 易于使用,但随着更多代码的添加,它往往会变得混乱。如果您计划从 jQuery 设置迁移到 React.js,请始终牢记以下几点:

  1. 将您的组件设计为可以安装到页面的独立 UI 元素。
  2. 使用组件内的状态变量和实用方法来控制组件如何呈现值。
  3. 调用setState()将通过render()重新渲染组件的 UI,同时更新状态值。
以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据