📜  ReactJS 中的 ComponentWillMount() 方法是什么?

📅  最后修改于: 2022-05-13 01:56:40.502000             🧑  作者: Mango

ReactJS 中的 ComponentWillMount() 方法是什么?

React 需要几个组件来表示特定功能的逻辑单元。当涉及到更新业务逻辑、应用程序配置更新和 API 调用时,componentWillMount 生命周期挂钩是一个理想的选择。

componentWillMount() 生命周期钩子主要用于在实际渲染发生之前实现服务器端逻辑,例如对服务器进行 API 调用。 componentWillMount() 方法允许我们在组件被加载或挂载到 DOM(文档对象模型)中时同步执行 React 代码。这个方法在 React 生命周期的挂载阶段被调用。

ComponentWillMount() 通常用于在加载组件或从服务器获取数据时显示加载器。

特征:

  • 它允许我们在将内容显示给最终用户之前对其进行修改,从而给最终用户留下更好的印象,否则,任何内容都可以显示给最终用户。
  • 因为它是一个 react 系统定义的方法,如果我们想通过编写任何自定义函数来实现相同的功能,那么它将无法为我们提供与 React 生命周期的一部分相同的性能,因此它被优化。

句法:

  • 在执行任何活动之前,他们首先调用的是构造函数,然后调用 componentWillMount()函数。
  • 在这个函数中,我们可以执行一些重要的活动,比如为最终用户修改 HTML 视图等。
  • 接下来将调用渲染,因为我们已经在 componentWillMount() 部分进行了一些修改,更改后的值将显示在用户端。
Javascript
componentWillMount() {
    // Perform the required 
    // activity inside it
}
  
// Call the render method to 
// display the HTML contents.
render(){
}


Javascript
import React, { Component } from "react";
  
  
class App extends Component{
constructor() {
    super();
    this.state = {
      message: "This is initial message"
    };
}
  
render() {
    return (
      
        

Update the state

        

  {this.state.message}

                
    ); } };    export default App;


Javascript
import React, { Component } from "react";
  
class ApiCall extends Component {
  constructor() {
    super();
    this.state = {
      todo: {}
    };
  }
  
  componentWillMount() {
    fetch("https://jsonplaceholder.typicode.com/todos/3")
      .then(response => response.json())
      .then(json => {
        this.setState({ todo: json });
      });
  }
  
  render() {
    const { todo } = this.state;
    console.log(todo)
    return (
      
        

API call :

           Todo title :

{todo.title}

           Todo completed :          

{todo.completed === true ? "true" :                              "false"}

      
    );   } }    export default ApiCall;


创建一个反应应用程序:

第 1 步:运行以下命令创建一个新项目

npx create-react-app my-app

第2步:上面的命令将创建应用程序,您可以使用以下命令运行它,您可以在浏览器中查看您的应用程序。

cd my-app
npm start

项目结构:它将如下所示

App.js :现在在 App.js 文件中写下以下代码。在这里,App 是我们编写代码的默认组件。

ComponentWillMount 操作 State():生命周期钩子 componentWillMount() 在初始渲染之前触发,该函数在组件的生命周期内只会触发一次。一旦组件启动,当前状态值将被更新的值覆盖,但请记住,这在组件的生命周期中发生一次。最后一步是在 render()函数中打印消息,如下所示。

Javascript

import React, { Component } from "react";
  
  
class App extends Component{
constructor() {
    super();
    this.state = {
      message: "This is initial message"
    };
}
  
render() {
    return (
      
        

Update the state

        

  {this.state.message}

                
    ); } };    export default App;

说明:当我们运行上面的例子时,消息变量的值会在组件启动后更新;这是操作业务逻辑的标准方法。

输出:

ComponentWillMount() 进行 API 调用: componentWillMount() 是在组件启动后进行 API 调用并将值配置为状态。要进行 API 调用,请使用 Axios 等 HttpClient,或者我们可以使用 fetch() 来触发 AJAX 调用。带有 fetch() API 调用的函数如下所示。 fetch() 与虚拟 API URL 一起使用,它访问服务器并获取数据;最后,响应被更新到包含对象的状态变量 todo 中。从 API 获得响应后,我们可以根据需要使用数据。下面是一个完整的例子

虚拟 API URL: https://jsonplaceholder.typicode.com/todos/3

Javascript

import React, { Component } from "react";
  
class ApiCall extends Component {
  constructor() {
    super();
    this.state = {
      todo: {}
    };
  }
  
  componentWillMount() {
    fetch("https://jsonplaceholder.typicode.com/todos/3")
      .then(response => response.json())
      .then(json => {
        this.setState({ todo: json });
      });
  }
  
  render() {
    const { todo } = this.state;
    console.log(todo)
    return (
      
        

API call :

           Todo title :

{todo.title}

           Todo completed :          

{todo.completed === true ? "true" :                              "false"}

      
    );   } }    export default ApiCall;

输出:

注意:与其他生命周期方法不同,更改 componentWillMount 内部的状态值不会一次又一次地重新运行组件。