как prevItem получает значение предыдущего элемента?

я сделал приложение todo, и я пытаюсь изменить состояние массива, и для этого я использовал метод onclick. Может ли кто-нибудь объяснить, как он на самом деле работает, и может регистрировать значение моих последних элементов.

function App() {
const [inputText, setInputText] = useState("");
const [items, setItems] = useState([]);

function handleChange(event) {
const newValue = event.target.value;
setInputText(newValue);
}

function addItem() {
setItems(function (prevItems) {
  console.log(prevItems);
  return [...prevItems, inputText];
});
setInputText("");
 }

    return (
    <div className="container">
  <div className="heading">
    <h1>To-Do List</h1>
  </div>
  <div className="form">
    <input onChange={handleChange} type="text" />
    <button onClick={addItem}>
      <span>Add</span>
    </button>
  </div>
  <div>
    <ul>
      {items.map((todoItem) => (
        <li>{todoItem}</li>
      ))}
    </ul>
  </div>
<    /div>
  );
   }

person Alphonse Prakash    schedule 13.11.2020    source источник
comment
Это проблема или вы просто хотите знать, как это работает?   -  person Naren    schedule 13.11.2020
comment
нет, это не проблема, я просто хочу знать, как это работает   -  person Alphonse Prakash    schedule 13.11.2020
comment
Тот же вопрос здесь, вы можете найти дополнительную информацию   -  person Naren    schedule 13.11.2020
comment
Отвечает ли это на ваш вопрос? React setState + Откуда взялось "prevState"?   -  person Naren    schedule 13.11.2020


Ответы (1)


React присваивает значение prevItem, используя подпись setItems (параметр установки useState):

  • Если вы вызовете setItems (значение), он установит значение для элементов - параметр setItems не является функцией

  • Если вы вызываете setItems(function(prevValue){return newValue}) возвращаемое новое значение будет установлено в элементы - param - это функция с первым аргументом, установленным в prevValue с помощью реакции

person Ryu    schedule 13.11.2020