我刚刚完成输入 npx create react app 来创建一个react应用程序,但由于某种原因,我的 App.js 是一个函数而不是一个类,例如)
结果:
function App() {
return ()
我想要这样的东西:
Class app extends components{
render (return())
}
我可以手动写下来,但我希望在创建应用程序时将类应用程序作为默认设置,所以有人能告诉我这是什么原因吗?
我刚刚完成输入 npx create react app 来创建一个react应用程序,但由于某种原因,我的 App.js 是一个函数而不是一个类,例如)
结果:
function App() {
return ()
我想要这样的东西:
Class app extends components{
render (return())
}
我可以手动写下来,但我希望在创建应用程序时将类应用程序作为默认设置,所以有人能告诉我这是什么原因吗?
现在对于 React 来说,这是开箱即用的。您可以使您的 App.js 成为无状态功能组件或类组件。
class App extends React.Component{
render(){
return(
<div>Hello World</div>
)
}
}
随着在 React 16.8 中引入钩子,功能组件可以是有状态的,并且在大多数情况下应该替换类组件。这就是为什么App
项目中的功能组件是用 生成的create-react-app
,更具体地说是react-scripts
包。
可以使用 oldreact-scripts
作为模板来初始化项目:
create-react-app foo --scripts-version react-scripts@^2
然后更新到最新版本:
npm -S react-scripts@^3
由于create-react-app
为项目提供静态样板,并且没有脚手架功能,因此可以App
从以前的react-scripts
版本复制和粘贴:
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;
正如@FaizanMubasher 所提到的,类组件不是很可重用,并且它们缺乏可互换性。从以前的版本复制类组件代码是没有意义的。使用远离类组件并开始使用功能组件将是理想的选择。这是任何寻求正确方法的人的示例。
import React from 'react';
import Layout from './components/Layout/Layout';
function App() {
return (
<div className="App">
<Layout />
</div>
);
}
export default App;
功能组件布局:
import React from 'react';
import Aux from '../../hoc/Aux';
const layout = (props) => (
<Aux>
<div>TOOLBAR, SIDEDRAWER, BACKDROP</div>
<main>
{props.children}
</main>
</Aux>
);
export default layout;