复制 const defaultCount = props.defaultCount || 0;
const [count, setCount] = useState(defaultCount)
//useState 按照第一次返回的顺序给你state的
return(
<button onClick={()=>{ setCount(1)}}>
Click({count})
</button>
)
复制 let state:[any] = [];
let cursor: number = 0;
function useState<T>(initState: T): [T, (setState: T)=> void]{
const currentCursor = cursor;
state[currentCursor] = state[currentCursor] || initState;
function setState(newState: T){
state[currentCursor] = newState
render()
}
++cursor
return [state[currentCursor], setState]
}
复制 let name ,setName;
let count , setCount;
id+=1;
if(id & 1){
[count, setCount] = useState(0)
[name, setName] = useState('Mike')
} else {
[name, setName] = useState('mike')
[count, setCount] = useState(0)
}
()=>{
console.log('initial count')
return props.defaultCount || 0;
}
在初始的状态是保存在一个全局变量中的, 多个状态,应该是保存在一个专门的全局容器中.
复制 function resolvDispatcher(){
var dispatcher = ReactCurrentOwner.currentDispatcher;
!(dispatcher !== null) ? invariant(false, 'hook can only be ...');
return dispatcher
}
复制 const queue = workInProgressHook.baseUpdate
// 接着我们判断
updateExpirationTime < renderExpriationTime
if(!didShip){
newBaseUpdate = prevUpdate;
newBaseState = _newState;
}