import React,{useCallback, useState} from 'react';
import ReactDOM from 'react-dom';
class Counter extends React.Component{
state={
count:10
}
add=()=>{
this.setState({
count:this.state.count+1
})
}
minus=()=>{
this.setState({
count:this.state.count-1
})
}
render(){
return <div className=''>
<h2>当前的数字是{this.state.count}</h2>
<button onClick={this.add}>+</button>
<button onClick={this.minus}>-</button>
</div>
}
}
function Counter2(){
var [count,setState]=useState(20);
function add(){
setState(count+1)
}
function minus(){
setState(count-1)
}
return <>
<h2>当前的数字是{count}</h2>
<button onClick={add}>+</button>
<button onClick={minus}>-</button>
</>
}
function Counter3(){
let [state,setState]=useState({count:10,name:'lly'})
function add(){
setState({...state,count:state.count+1})
}
function minus(){
setState({...state,count:state.count-1})
}
return <>
<h2>{state.name}当前的数字是{state.count}</h2>
<button onClick={add}>+</button>
<button onClick={minus}>-</button>
</>
}
function Counter4(){
let [state,setState]=useState({count:10,name:'lly'})
function add(){
setState({...state,count:state.count+1})
}
function log(){
setTimeout(()=>{
console.log(state.count)
},3000)
}
return <>
<h2>{state.name}当前的数字是{state.count}</h2>
<button onClick={add}>+</button>
<button onClick={log}>log</button>
</>
}
function Counter5(){
let [state,setState]=useState({count:10,name:'lly'})
function add(){
setState({...state,count:state.count+1})
}
function lazy(){
setTimeout(()=>{
setState({count:state.count+1})
},3000)
}
function lazyFn(){
setTimeout(()=>{
setState((state)=>{
console.log(state);
return {count:state.count+1}
})
},3000)
}
return <>
<h2>{state.name}当前的数字是{state.count}</h2>
<button onClick={add}>+</button>
<button onClick={lazy}>lazy</button>
<button onClick={lazyFn}>lazyFn</button>
</>
}
function Counter6(){
let [state,setState]=useState(function(){
console.log('初始化')
return {count:100}
})
console.log('render')
function add(){
setState({...state,count:state.count+1})
}
return <>
<h2>{state.name}当前的数字是{state.count}</h2>
<button onClick={add}>+</button>
</>
}
var oldAdd=null;
function Counter7(){
let [count,setCount]=useState(10);
let [name,setName]=useState('lly');
console.log('render')
const add=useCallback(()=>{
setCount(count+1)
},[])
console.log(add==oldAdd);
oldAdd=add;
const changeName=useCallback(()=>{
setName('lingyan');
})
return <>
<h2>{name}当前的数字是{count}</h2>
<button onClick={add}>+</button>
<button onClick={changeName}>changeName</button>
</>
}
ReactDOM.render(<>
<Counter7/>
</>,document.getElementById('root'))