Почему мне нужно использовать фигурные скобки в этом методе React - PullRequest
1 голос
/ 28 мая 2020

Я добавляю этот метод в компонент React:

    removeContact = (contact) => {
     this.setState((currentState) => ({
      contacts: currentState.contacts.filter((c) => {
        return c.id !== contact.id
      })
    }))

Метод изменяет состояние компонента каждый раз, когда пользователь нажимает кнопку удаления элемента, а затем повторно отображает страницу, показывая только не удаленные элементы. Метод действительно работает нормально, но я не понимаю, зачем мне нужны вторые фигурные скобки , содержащие скобки в стрелочной функции во второй строке.

Позвольте мне отметить, какие фигурные фигурные скобки, о которых я говорю

=> ({
//contacts: currentState...
}))

Я знаю, что функция стрелки может использоваться как с фигурными скобками, так и со скобками в зависимости от содержимого. Но какова функция фигурных скобок, содержащих скобки?

Большое спасибо за ваше время

Ответы [ 2 ]

4 голосов
/ 28 мая 2020

"(" выполняет автоматический возврат функции & "{" является открывающей скобкой объекта

Использование "(" приводит к автоматическому возврату функции. Это то же самое, что и выполнение

=> {
 return {} //contacts: currentState...
})

{ внутри - это обычная скобка объекта.

Итак, ваша () => ({}) - это функция, которая автоматически возвращает объект

1 голос
/ 28 мая 2020

В основном это означает, что вы возвращаете объект без записи return

removeContact = (contact) => {
     this.setState((currentState) => ({
      contacts: currentState.contacts.filter((c) => {
        return c.id !== contact.id
      })
}))

То же самое с этим:

removeContact = (contact) => {
     this.setState((currentState) => {
      console.log("This is a function and I'm in the scope of function now")
      return {
          contacts: currentState.contacts.filter((c) => {
          return c.id !== contact.id
        }
     }
}))
...