Какой правильный синтаксис для обновления состояния? - PullRequest
0 голосов
/ 24 апреля 2019

Как правильно обновлять состояние с помощью response-hook?

const [items, setItems]= useState([]];
const onChangeHandlers= (values)=> {
setItems({setItems:values})
}
const values = ['item1','item2','item3'];`

Ответы [ 3 ]

1 голос
/ 24 апреля 2019

При обновлении состояния с помощью ловушки средства обновления useState следует учитывать несколько важных моментов:

  1. Средство обновления состояния не объединяет состояние, а заменяет существующее состояние новым
  2. Программа обновления состояний не знает, какое имя вы даете государству, в вашем случае вы называете это items.

Правильный способ здесь просто передать новое значение, как вы это сделали бы.при вызове нормальной функции

const [items, setItems]= useState([]];
const onChangeHandlers= (values)=> {
   setItems(values)
}
const values = ['item1','item2','item3'];
1 голос
/ 24 апреля 2019

У вас должна быть функция изменения значения

 1:  import React, { useState } from 'react';
 2:
 3:  function Example() {
 4:    const [count, setCount] = useState(0);
 5:
 6:    return (
 7:      <div>
 8:        <p>You clicked {count} times</p>
 9:        <button onClick={() => setCount(count + 1)}>
10:         Click me
11:        </button>
12:      </div>
13:    );
14:  }

Ваш пример

   const [items, setItems] = useState([]);

   const onChangeHandlers= (values)=> {
   setItems(values)}};
0 голосов
/ 24 апреля 2019
const [items, setItems] = useState([]);

const onChangeHandlers = values => {
    setItems(prevState => ([
        ...items,
        values
    ]);
};

const values = ['item1', 'item2', 'item3'];
...