Реагировать на пример с родным Docs ES6 - PullRequest
1 голос
/ 28 октября 2019

Приведенный ниже код взят из React Native Docs. Как видите, есть две функции с жирными стрелками. Я понимаю использование обычных скобок со строкой, содержащей .... previousState => ({ и т. Д. Здесь использование () необходимо, поскольку оно возвращает литерал объекта. Однако я не могу понять, почему мы используем "(" с функцией обратного вызова setInterval. Я имею в виду эту строку: setInterval(() => ( .... Почему мы не пишем как setInterval(() => { .....

class Blink extends Component {

  componentDidMount() {

    //HEART OF THE QUESTION. Why do we use "(" below, instead "{". Do we need to return for setInterval or just define a function to run ?
    setInterval(() => ( 
    
      //Here, "(" is normal because it returns object literal
      this.setState(previousState => ({
        isShowingText: !previousState.isShowingText
      }))
    ), 1000);
  }

  //....

}

1 Ответ

1 голос
/ 28 октября 2019

setInterval не требует возврата. Оба из них будут прекрасно работать:

setInterval(() =>
    this.setState(previousState => ({
        counter: previousState.counter + 1 || 1
    })),
1000);

и вот это (на мой взгляд, это не очень красиво без скобок):

setInterval(() => {
    this.setState(previousState => ({
        counter: previousState.counter + 1 || 1
    }));
}, 1000);

Обычно круглые скобки необходимы для многострочных возвратов, здесьхорошее объяснение: http://jamesknelson.com/javascript-return-parenthesis/

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