網站首頁 編程語言 正文
1.react代碼模式分為兩種 類組件和函數組件(生命周期也有所不同)
2.類組件(寫法如下)
import React from 'react'
export default class App1 extends React.Component{
state = {
username:'',
password:''
}
setUser = (event) => {
this.setState({username:event.target.value})
}
setPass = (event) => {
this.setState({password:event.target.value})
}
Submit = () => {
console.log(this.state.username , this.state.password)
}
render(){
return(
<>
<input type="text" value={this.state.username} onChange={this.setUser}/>
<input type="text" value={this.state.paddword} onChange={this.setPass}/>
<button onClick={this.Submit}>登錄</button>
</>
)
}
}
3.函數組件
import { useState ,useEffect} from "react"
function App1 (){
const [username ,setUsername] = useState('')
const [password ,setPassword] = useState('')
const setChange = event => {
setUsername(event.target.value);
};
const setChangePassWold = event => {
setPassword(event.target.value);
};
const Submit = () =>{
console.log(username,password)
}
return(
<>
<input value={username} onChange={setChange}></input>
<input value={password} onChange={setChangePassWold}></input>
<button onClick={Submit}>登錄</button>
</>
)
}
export default App1
以上是兩種模式的寫法展示
4.類組件和函數組件的區別:
- 類組件:state定義狀態變量,有繼承,而且是oop模式(面向對象編程)
- 類組件缺點:復用性不如函數組件,比較難拆分
- 函數組件:根基是FP(函數式編程), 沒有this指向,使用一些列Hooks實現對應的功能
- 函數式組件缺點:不具備處理錯誤的邊界等業務情況的Hooks
5.生命周期
? A.類組件生命周期(三個階段:掛載階段,更新階段,卸載階段)
掛載階段執行順序?
1.constructor
2.componentWillMount
3.render
4.componentDidMount
更新階段執行順序
1.shouldComponentUpdate
2.componentWillUpdate
3.render
4.componentDidUpdate
銷毀階段
componentWillUnmount
實際操作如下
import React from "react";
import {Link} from 'react-router-dom'
class Demo extends React.Component{
constructor(props){
super(props)
console.log("constructor")
}
state = {
num:1
}
UNSAFE_componentWillMount(){
console.log("componentWillMount")
}
componentDidMount(){
console.log("componentDidMount")
}
shouldComponentUpdate(){
console.log('shouldComponentUpdate')
return true
}
UNSAFE_omponentWillUpdate(){
console.log("componentWillUpdate")
}
componentDidUpdate(){
console.log("componentDidUpdate")
}
componentWillUnmount(){
console.log("componentWillUnmount")
}
Submit = () => {
this.setState({num:this.state.num+=1})
}
render(){
console.log('render')
return(
<>
<Link to='/app1'>App1</Link>
//這里替換成自己的即可
<h3>{this.state.num}</h3>
<button onClick={this.Submit}>改變</button>
</>
)
}
}
export default Demo
更新階段
?B.函數組件生命周期,函數組件本質沒有生命周期,但是我們通過Hooks來模仿類組件當中的生命周期(也是三個階段)
import { useState ,useEffect} from "react"
import {Link} from 'react-router-dom'
function App1 (){
const [username ,setUsername] = useState('')
const [password ,setPassword] = useState('')
const setChange = event => {
setUsername(event.target.value);
};
const setChangePassWold = event => {
setPassword(event.target.value);
};
const Submit = () =>{
setUsername('')
console.log(username,password)
}
// useEffect = vue mounted 區別是只要視圖更新就變化 感覺類似watch 但是他又是初始化的 時候第一個
// useEffect(()=>{},[])
useEffect(()=>{
console.log('模擬componentDidMount第一次渲染')
return () =>{
console.log('模擬componentWillUnmount執行銷毀后')
}
},[password])
return(
<>
<Link to='/home1'>home1</Link>
//這里需要修改成自己的路徑
<input value={username} onChange={setChange}></input>
<input value={password} onChange={setChangePassWold}></input>
<button onClick={Submit}>登錄</button>
</>
)
}
export default App1
//useEffect是react給我們的Hooks 我們可以使用它來模擬正常的生命周期流程
?useEffect(()=>{},[]) 是他的格式 ,第二個參數是需要監聽誰的變化就寫誰,也可以不寫
原文鏈接:https://blog.csdn.net/m0_49789433/article/details/128549482
相關推薦
- 2022-07-22 UC瀏覽器兼容問題
- 2023-07-07 sklearn.model_selection模塊介紹
- 2022-06-14 Go語言學習之條件語句使用詳解_Golang
- 2022-10-07 Pandas數據分析固定時間點和時間差_python
- 2023-02-12 完美解決Redis在雙擊redis-server.exe出現閃退問題_Redis
- 2022-09-06 python實現plt?x軸坐標按1刻度顯示_python
- 2023-01-05 Python?optparse模塊及簡單使用_python
- 2022-10-19 C++線程安全容器stack和queue的使用詳細介紹_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支