尽量减少组件状态并避免不必要的状态同步。

🚫 重构之前 - b 是一个冗余状态,应该是同步的:

export default function App() {
  const [a, setA] = useState(1);
  const [b, setB] = useState(1);

  function updateA(x) {
    setA(x);
  };

  function updateB() {
    setB(1 + a);
  };

  useEffect(() => {
    updateB()
  },[a])


  return (
    <div>
      <button onClick={() => updateA(a+1)}>Click</button>
        <p>a: {a}</p>
        <p>b: {b}</p>
    </div>
)
};

进入全屏模式 退出全屏模式

重构后 - a 是一个最小的充分状态,只从它派生 b:

export default function App() {
  const [a, setA] = useState(1);

  function updateA(x) {
    setA(x);
  };

  function updateB() {
    return a+1
  };

  return (
    <div>
      <button onClick={() => updateA(a+1)}>Click</button>
      <p>a: {a}</p>
      <p>b: {updateB()}</p>
    </div>
  )
};

进入全屏模式 退出全屏模式

Logo

React社区为您提供最前沿的新闻资讯和知识内容

更多推荐