Почему в react не работает хук useState?

В react пытаюсь сделать просто массив с элементами цифрами от 1 до 10([1,2...10]) используя хук useState:

const [pagesArray, setPagesArray] = useState([]);

    useMemo(() => {
        setPagesArray([])
        for (let i = 0; i < totalPages; i++) {
            setPagesArray([...pagesArray, i + 1]);
        }
        console.log(pagesArray)
    }, [totalPages]);

Здесь totalPages - это число 10(оно, если важно, тоже изменяется с помощью useState). Но pagesArray не меняется, почему?


Ответы (1 шт):

Автор решения: ksa

В react пытаюсь сделать просто массив с элементами цифрами от 1 до 10([1,2...10]) используя хук useState:

Вот так можно такое провернуть...

const App = _ => {  
  const [p, setP] = React.useState(0)
  const [a, setA] = React.useState([])
  React.useEffect(_ => {
    const arr = Array.from({length: +p}, (_, i) => i + 1)
    setA(arr)
  }, [p])
  return <main>
    <input type='number' onChange={e => setP(+e.target.value)} value={p} />
    <section>
      {a.map(v => <div key={v}>{v}</div>)}
    </section>
  </main>
}

const domContainer = document.querySelector('#like_button_container');
const root = ReactDOM.createRoot(domContainer);
root.render(<App />);
section {
  display: flex;
  gap: 10px;
}
div {
  padding: 5px;
  border: 1px solid;
}
<script src="https://unpkg.com/react@18/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" crossorigin></script>
<div id="like_button_container"></div>

→ Ссылка