React-Create-App 创建 App.js,但使用旧的 js 语法

React-Create-App creates App.js, but in old js syntax

我刚开始尝试学习 reactjs 并找到了一些教程。他们都告诉我 运行 npx create-react-app . 之类的。我遇到的问题是当我看到他们的 App.js 他们都有 类,而我的 function App() {...} 而不是 class App extends Component。与导入语句相同。他们说 import React, { Component } from 'react' 而我的说 import React from 'react' 我不确定哪里出了问题,我该如何解决?

有多种方法可以定义 React 组件——作为 class 组件或函数组件。

现在,后者,函数组件,是首选的方式,除非你想用组件的 lifecycle methods.

做一些非常有趣的事情。

Class 组件仍然有效,但是,您会经常在较旧的在线教程中找到它们。

Create React 应用程序创建一个功能组件App 让你开始:

import React from 'react';
import logo from './logo.svg';
import './App.css';

function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}

export default App;

这可以重写为 class 组件,如下所示:

import React, { Component } from "react";
import logo from "./logo.svg";
import "./App.css";

class App extends Component {
  render() {
    return (
      <div className="App">
        <header className="App-header">
          <img src={logo} className="App-logo" alt="logo" />
          <p>
            Edit <code>src/App.js</code> and save to reload.
          </p>
          <a
            className="App-link"
            href="https://reactjs.org"
            target="_blank"
            rel="noopener noreferrer"
          >
            Learn React
          </a>
        </header>
      </div>
    );
  }
}

export default App;

如您所见,它有点冗长,但完全有效。

您可以将函数替换为您在您正在学习的教程的示例代码中找到的 class。

别忘了导入 Component 除了 react,在这种情况下 – 对于 class 组件,这是必要的,因为 class 需要扩展Component.