发布于 2026-01-06 1 阅读
0

React:如何创建组件

React:如何创建组件

组件是任何 React 应用不可或缺的一部分。在本文中,我们将学习如何创建组件来实现我们想要的功能。

把组件想象成应用程序里可以反复使用的小模块。假设我们正在做一个社交网络,想在每篇文章下方添加点赞、分享和评论按钮。我们可以把这些按钮的代码分别写在每个需要的地方,但如果要在六个不同的地方显示,而且每次都需要修改,那就太麻烦了。

通过创建一个组件,我们可以编写一次实际代码,然后将其放置在我们想要的任何位置。

创建类组件

为了创建一个类组件,我们需要给它命名。在下面的代码中,我们将类组件命名为“Example”。组件的所有代码都将放在省略号(“...”)所在的位置。

import React from 'react';

class Example1 extends React.Component {
  ...
}
Enter fullscreen mode Exit fullscreen mode

这很简单!需要注意的是,如果这是一个独立文件中的组件,则必须将其导出。有两种方法可以做到这一点。我们可以在类实例化之前添加“export default”,或者直接在类之后添加一行导出语句。示例如下:

export default class Example2 extends React.Component {
  ...
}

or

class Example3 extends React.Component {
  ...
}
export default Example3;
Enter fullscreen mode Exit fullscreen mode

向类组件添加状态

类组件的另一个巨大优势在于状态管理。正如我之前提到的,状态管理允许我们在组件内部管理数据。状态管理是使用 React 的一大优势(尽管这个概念并非 React 独有),而要使用它,我们需要一个类组件。

要开始使用状态管理,我们需要给类组件添加一个构造函数。你可以在这里阅读更多关于构造函数的信息,但现在你只需要知道,这是给组件添加状态所必需的。通常,我们会看到“props”作为构造函数的参数传入,这样我们就可以使用传递给该组件的任何 props。下面的示例对此进行了说明。

class Example4 extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      ...
    }
  }
}
export default Example4;
Enter fullscreen mode Exit fullscreen mode

使用 render 方法渲染我们的 JSX。

在构造函数之后,我们可以添加一个 render 方法,它会返回我们的 JSX 代码。需要注意的是,在 React 中,无论组件类型如何,return 属性只能返回一个直接元素。这意味着我们用来创建该组件的所有 JSX 代码都必须包裹在一个外部元素中,例如 `<div>`。下面的示例展示了如何构建这样的组件。

class Example5 extends React.Component {
  ...
  render() {
    return (
      <div>
        <p>Hello World!</p>
      </div>
    )
  }
}
Enter fullscreen mode Exit fullscreen mode

我们组件中的自定义函数

类组件的另一个优点是能够编写供组件内部使用的函数。这非常简单。我们可以在构造函数和渲染方法之间编写一个函数。我们可以像其他 JavaScript 函数一样,传递任何必要的参数。不过,要实现这一点,还需要一个额外的步骤。在构造函数内部,我们需要将 `this` 关键字绑定到该方法,以便它可以在任何地方使用。为此,我们可以使用以下代码:

  this.customFunction = this.customFunction.bind(this);
Enter fullscreen mode Exit fullscreen mode

本文末尾的一个例子将对此进行更详细的说明,以便您更好地了解这些事物是如何结合在一起的。

使用组件

如果组件位于不同的文件中,我们首先需要将组件导入到想要使用它的文件中。我们可以使用以下代码:

import Example6 from './path/to/component';
Enter fullscreen mode Exit fullscreen mode

导入完成后,我们可以使用导入时指定的名称将其添加到 JSX 中。例如,我们可以按如下方式添加上面导入的组件:

<Example6 />
Enter fullscreen mode Exit fullscreen mode

道具

如果我们想将数据传递给组件,而又不想在组件内部硬编码或进行任何查询,该怎么办呢?这时就需要用到 props 了。Props 是我们可以传递给组件实例的数据片段,我们可以随意命名这些数据,以便在组件内部访问它们。

假设我们要将字符串“Hello World”传递给组件。在赋值 prop 时,我们需要给 prop 起个名字。这个名字应该能够准确地告诉我们它代表什么。由于这是一个示例,我这里就用“text”吧,但在实际应用中,名字应该更具描述性。我们可以这样做:

<Example6 text="Hello World" />
Enter fullscreen mode Exit fullscreen mode

组件内部接收 props

好的,现在我们已经将 props 传递给了组件,接下来该怎么做呢?我之前说过,在创建组件的构造函数时,我们通常会将 props 放入参数中。这样组件就能接收到我们传递的 props。接收到 props 后,我们就可以在 JSX 中使用 `this.props.NameOfProp` 来访问它们,如下所示:

<p>{ this.props.text }</p>
Enter fullscreen mode Exit fullscreen mode

上面的代码会在 ap 标签中渲染“Hello World”。很简单,对吧?

完整代码

// First we create our class
class Greeting extends React.Component {

    // Then we add our constructor which receives our props
    constructor(props) {
        super(props);
        // Next we establish our state
        this.state = {
            name: '',
            greeting: `Good ${this.props.time}, `
        }
        // To use the 'this' keyword, we need to bind it to our function
        this.onChange = this.onChange.bind(this);
    }

    // A custom function to change the name in our state to match the user input
    onChange(e) {
        this.setState({
            name: e.target.value
        })
    }
    // The render function, where we actually tell the browser what it should show
    render() {
        return (
            <div>
                <section className="section">
                    <label className="label">Name:</label>
                    <input className="input" name="name" placeholder="Enter your name..." onChange={this.onChange} />
                </section>
                <section className="section">
                    <p>{this.state.greeting} {this.state.name}</p>
                </section>
            </div>
        )
    }
}



ReactDOM.render(<Greeting time="morning" />, document.getElementById('app'));
Enter fullscreen mode Exit fullscreen mode

您也可以在这里看到该组件的实际运行效果。

结论

虽然这些只是基础知识,但它们足以让你在 React 中构建应用。尝试进行各种尝试,例如向新组件传递 props,或者向组件添加 state 来展示数据。这些都是 React 的基础构建模块。



另外,我很想看看你们用 React 开发的作品,请在下面的评论区留言!

文章来源:https://dev.to/iam_timsmith/react-how-to-create-a-component-2ho9