React Hooks, объявлять одно и то же состояние для разных переменных - PullRequest
0 голосов
/ 14 января 2020

Если у меня есть:

function ExampleWithManyStates() {

    const [age, setAge] = useState(0);
    const [count, setCount] = useState(0);
    ...
    const [price, setPrince] = useState(0);

Есть ли способ установить useState(0) для всех age, count, price?

edit: пример (я пытаюсь объяснить, я я не говорю, что деструктуризация массива должна работать следующим образом)

    const [ {age, count, price}, {setAge, setCount, setPrice}] = useState(0);

Способ в одну строку?

Ответы [ 2 ]

0 голосов
/ 14 января 2020

Вы можете составить свой собственный хук, если вы хотите привести в порядок или повторно использовать его:

const useStates = (count, initialValue) => {
  const states = []
  for (let i=0; i<count; i++) {
    states.push(useState(initialValue))
  }
  return states
}

const ExampleWithManyStates = () => {
  const [[age, setAge], [count, setCount], [price, setPrice]] = useStates(3, 0)
}

Не уверен, что это отличный шаблон для большинства случаев использования, но я не знаю, что вы Пытаюсь сделать.

0 голосов
/ 14 января 2020

Вы можете объявить начальное состояние, а затем применить его к каждому:

function ExampleWithManyStates() {

    const initialState = 0;

    const [age, setAge] = useState(initialState);
    const [count, setCount] = useState(initialState);
    ...
    const [price, setPrince] = useState(initialState);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...