如何在 React 中使用 componentWillMount
介绍
使用 React 之类的库需要多个组件来表示特定功能的逻辑单元。因此,它需要消耗资源。componentWillMount ()生命周期钩子主要用于在实际渲染发生之前实现服务器端逻辑,例如对服务器进行 API 调用。在本指南中,您将学习如何在初始组件渲染后使用componentWillMount()并进行 API 调用。
使用 componentWillMount() 来操作状态
众所周知,生命周期钩子componentWillMount在初次渲染之前触发,并且该函数在组件的生命周期内只会触发一次。
它用于在 DOM 渲染之前更新状态值,创建一个状态变量,如下所示。
      constructor() {
    super();
    this.state = {
      message: "This is initial message"
    };
}
    
如上所示,有一个名为message的状态变量,带有默认字符串。现在更新消息,如下所示。
      componentWillMount() {
    this.setState({ message: "This is an updated message" });
}
    
一旦组件启动,当前状态值将被更新的值覆盖,但请记住这在组件的生命周期中只会发生一次。
最后一步是在render()函数中打印消息,如下所示。
      render() {
    return (
      <div>
        <p>Update the state</p>
        <hr />
        {this.state.message}
      </div>
    );
}
    
当您运行上述示例时,一旦组件启动,消息变量的值就会更新;这是操作业务逻辑的标准方法。
使用 componentWillMount() 进行 API 调用
componentWillMount()的主要用途之一是在组件启动后进行 API 调用并将值配置到状态中。
要进行 API 调用,请使用HttpClient(例如Axios ),或者您可以使用fetch()来触发 AJAX 调用。
带有fetch() API 调用的函数如下所示。
      componentWillMount() {
    fetch("https://jsonplaceholder.typicode.com/todos/1")
      .then(response => response.json())
      .then(json => {
        this.setState({ todo: json });
      });
}
    
fetch()与虚拟 API URL 一起使用,它会访问服务器并获取数据;最后,响应会更新到包含对象的状态变量todo中。
      this.setState({ todo: json });
    
从 API 获得响应后,您可以根据需要使用数据。下面是一个完整的示例。
      import React, { Component } from "react";
class ApiCall extends Component {
  constructor() {
    super();
    this.state = {
      todo: {}
    };
  }
  componentWillMount() {
    fetch("https://jsonplaceholder.typicode.com/todos/1")
      .then(response => response.json())
      .then(json => {
        this.setState({ todo: json });
      });
  }
  render() {
    const { todo } = this.state;
    console.log(todo)
    return (
      <div>
        <p>API call :</p>
        Todo title : <p>{todo.title}</p>
        Todo completed : <p>{todo.completed === true ? "true" : "false"}</p>
      </div>
    );
  }
}
export default ApiCall;
    
请记住,与其他生命周期方法不同,更改componentWillMount内部的状态值不会一次又一次地重新运行组件。
注意:根据 React 官方文档,生命周期钩子componentWillMount已弃用。它将一直工作到版本 17,但您可以将其重命名为UNSAFE_componentWillMount。componentWillMount钩子将无法访问原生 DOM 元素,因为它在render()函数之前触发,因此元素(HTML)将不可用。
结论
在更新业务逻辑、应用程序配置更新和 API 调用时,componentWillMount生命周期钩子是理想的选择。
明智地使用它,因为一旦发现更改,应用程序就有可能需要重新运行。您已经了解了如何进行 AJAX API 调用并更新初始状态值。希望这对您有所帮助。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
                                
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                
                            
                                    
                                    
                                    
                                    
    
    
            
  
        
请先 登录后发表评论 ~