react手写useState
Posted 张长长
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了react手写useState相关的知识,希望对你有一定的参考价值。
let _state=[];
let index=0;
function myUseState(initialValue) {
int currentIndex=index; //引入中间变量currentIndex就是为了保存当前操作的下标index。
_state[currentIndex] = _state[currentIndex]===undefined? initialValue:_state[currentIndex];
const setState = (newValue) => {
_state[currentIndex] = newValue;
render();
};
index+=1;// 每次更新完state值后,index值+1
return [_state[currentIndex], setState];
}
const render = () => {
index=0; //重要的一步,必须在渲染前后将index值重置为0,不然index会一种增加1
ReactDOM.render(<App />, document.getElementById("root"));
};
// 使用myUseState
const App = () => {
const [n, setN] = myUseState(0);
const [m, setM] = myUseState(0);
return (
<div classNam="App">
<p>n:{n}</p>
<button onClick={()=>{setN(n+1)}}>n+1</button>
<p>m:{m}</p>
<button onClick={()=>{setM(m+1)}}>n+1</button>
</div>
);
};
ReactDOM.render(<App />, document.getElementById("root"));
以上是关于react手写useState的主要内容,如果未能解决你的问题,请参考以下文章
React useState 由于 useRef 而没有更新
为啥我没有取回 useState 的新值 - React.JS?
Firebase 和 React Hooks(useState 和 useEffect)