reactjs React:new Set(array)在重新渲染时不会更新

lndjwyie  于 2024-01-07  发布在  React
关注(0)|答案(1)|浏览(137)

我对下面的行为感到困惑。当我点击“点击我”时,test正确更新,但testSet没有更新。准确地说,测试集只更新一次,testSet的长度永远不会超过5。
useTest.ts

  1. import { useState } from "react";
  2. export const useTest = () => {
  3. const [test, setTest] = useState(["orange", "apple", "banana"]);
  4. const testSet = new Set(test);
  5. console.log(test)
  6. console.log(testSet)
  7. const increment = () => {
  8. test.push("grape");
  9. setTest([...test]);
  10. // setTest(newTest);
  11. };
  12. return { test, testSet, increment}
  13. }

字符串


的数据
整个代码在下面。
App.tsx

  1. import React from 'react';
  2. import { Test } from './Test';
  3. // import { Test2 } from './Test2';
  4. function App() {
  5. return (
  6. <>
  7. <Test />
  8. {/* <Test2 /> */}
  9. </>
  10. );
  11. }
  12. export default App;


Test.tsx

  1. import { useTest } from "./hooks/useTest";
  2. export const Test = () => {
  3. const {test, testSet, increment} = useTest();
  4. return (
  5. <div>
  6. <h1>Test1</h1>
  7. <h2>{test}</h2>
  8. <h2>{testSet}</h2>
  9. <button onClick={() => {increment()}}>Click me</button>
  10. </div>
  11. );
  12. }

qybjjes1

qybjjes11#

set是JavaScript中处理唯一值集合的数据结构。
grape不会添加到set中,因为它是重复值。

相关问题