обновить состояние из другой функции с помощью useState - PullRequest
0 голосов
/ 03 августа 2020
const Room = (props) => {
  const [hasError, setErrors] = useState(false);
  const [rooms, setRooms] = useState([]);

  return (
      <div> <a onClick={() => deleteRoom()}</div>
    )
}

const deleteRoom = () => {
  //How to update setRooms here
}

Как обновить setRooms в методе deleteRoom?

Ответы [ 3 ]

3 голосов
/ 03 августа 2020

Вам просто нужно определить функцию deleteRoom внутри компонента Room.

const Room = (props) => {
  const [hasError, setErrors] = useState(false);
  const [rooms, setRooms] = useState([]);



  const deleteRoom = () => {
    setRooms(...);
  }

  return (
      <div> <a onClick={() => deleteRoom()}</div>
  )
}
2 голосов
/ 03 августа 2020

Вы можете передать setRooms в качестве аргумента в deleteRoom и вызвать его там.

Например,

const Room = (props) => {
  const [hasError, setErrors] = useState(false);
  const [rooms, setRooms] = useState([]);

  return (
      <div> <a onClick={() => deleteRoom(setRooms)}</div>
    )
}

const deleteRoom = (setRooms) => {
  //How to update setRooms here
  setRooms(...)
}
0 голосов
/ 03 августа 2020

У вас есть 2 варианта:

  1. Поместите свой метод deleteRoom в компонент Room
const Room = (props) => {
  const [hasError, setErrors] = useState(false);
  const [rooms, setRooms] = useState([]);


  const deleteRoom = () => {
    ... use your state..
  }

  return (
      <div> <a onClick={() => deleteRoom()}</div>
    )
}
Передайте свои useState функции в deleteRoom в качестве аргументов.
const Room = (props) => {
  const [hasError, setErrors] = useState(false);
  const [rooms, setRooms] = useState([]);


  return (
      <div> <a onClick={() => deleteRoom(setRooms, setErrors)}</div>
    )
}

const deleteRoom = (setRooms, setErrors) => {
  you can use setRooms() and setErrors() here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...