📜  在 React 中使用构造函数与 getInitialState 有什么区别?

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

在 React 中使用构造函数与 getInitialState 有什么区别?

React 中的构造函数和 getInitialState 都是用来初始化状态的,但不能互换使用。这两者的区别在于我们在使用 ES6 类时应该在构造函数中初始化状态,而在使用 React.createClass(ES5 语法)时定义 getInitialState 方法。所以constructor和getInitialState的区别就是ES6和ES5本身的区别。

我们将getInitialState与 React.createClass 一起使用,构造函数与 React.Component 一起使用。

句法:

class App extends React.Component {
constructor(props) {
  super(props);
  this.state = { /* initial state */ };
}
}

句法:

var App = React.createClass({
getInitialState() {
  return { /* initial state */ };
},
});

上述两种初始化状态的语法是等价的。

创建反应应用程序:

第 1 步:使用以下命令创建一个 React 应用程序:

npx create-react-app foldername

第 2 步:创建项目文件夹(即文件夹名称)后,使用以下命令移动到该文件夹:

cd foldername

项目结构:它将如下所示。

使用构造函数初始化状态:

Javascript
import {React ,Component} from 'react'
class App extends Component{
     
  constructor(props) {
    super(props);
    this.state = {
      username: "kapilchhipa4",
      password: "12345678"
    }
  }
    
  render() {  
    return (
      
      

Username: {this.state.username}

      

Password: {this.state.password}

      
      )    } }           export default App


Javascript
import { React } from 'react'
  
var App = React.createClass({
  
  getInitialState() {
    return { 
      username: 'kapilchhipa4',
      password:'12345678'
    };
  },
  
  render() {
    return (  
      
        

Username: {this.state.username}

      
    )   } });              export default App


使用 getInitialState 方法初始化状态:

注意:我们需要使用以下命令安装一个库来使用 createReactClass 方法:

npm install create-react-class --save

Javascript

import { React } from 'react'
  
var App = React.createClass({
  
  getInitialState() {
    return { 
      username: 'kapilchhipa4',
      password:'12345678'
    };
  },
  
  render() {
    return (  
      
        

Username: {this.state.username}

      
    )   } });              export default App

输出: