公司项目需要使用react,而函数式组件也是官方比较推荐的!!!所以学习hooks是很重要的。
纯函数组件有以下特点:
因存在如上特点,使得纯函数组件只能做UI展示的功能, 涉及到状态的管理与切换就不得不用到类组件或者redux。 但因为简单的页面也是用类组件,同时要继承一个React实例,使得代码会显得很重。
以前我们可以使用class来声明一个组件,其实使用function也可以定义一个组件:
创建 App1.js :
import React from 'react'
function App1(){
return (
<div>
<h1>函数式组件</h1>
</div>
)
}
export default App1;
备注:
在vscode中,如果安装过 ES7 React/Redux/GraphQL/React-Native snippets 这个插件,即可直接使用 rfc 快捷键敲出以下模板:
import React from 'react';
const App = () => {
return (
<div>
</div>
);
}
export default App;
在 index.js 中调用:
import ReactDOM from 'react-dom'
import App from './App1'
ReactDOM.render(
<App />,
document.getElementById('root')
)
现在我们改成函数式编程实现累加案例:
// useState就是hooks提供的一个api
import React, { useState } from 'react'
function App(){
// 这里useState(0)中的0,就是定义num的初始值,setNum是修改num的方法
const [num, setNum] = useState(0);
return (
<div>
<h2>{num}</h2>
<button onClick={()=>{setNum(num+1)}}>点击加1</button>
</div>
)
}
export default App;