简易实现react hooks

29 阅读1分钟

import React from 'react';
import ReactDom from 'react-dom';

const root = ReactDom.createRoot(document.getElementById('#root'));
const App = () => <div>app</div>;

const useState = (() => {
  const state:any[] = [];
  const setters:Function[] = [];
  let stateIndex = 0;
  // 刷新页面
  const render = () => {
    stateIndex = 0
    root.render(<App/>)
  };
  const createSetters = (index) => {
    return function(newState) {
      state[index] = newState;
      render()
    }
  };
  return function (initialState) {
    state[stateIndex] = state[stateIndex] ?? initialState;
    setters.push(createSetters(stateIndex))
    const value = state[stateIndex];
    const setter = setters[stateIndex];
    stateIndex++;
    return [value, setter]
  }
})();