useState
初步模拟让我们发现了Hooks的第一个核心原理:闭包,是的Hooks返回的state和setState方法,在hooks内部都是利用闭包实现的
用法
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]
}坑
1.useState 必须要规规矩矩的写
这样子写会有问题
在初始的状态是保存在一个全局变量中的, 多个状态,应该是保存在一个专门的全局容器中.
原理
这个方法真正用的时候 要在我们 react 进行渲染的时候, 已经创建虚拟 dom 的实例
最后更新于
这有帮助吗?