Функция стрелки в функциональном компоненте, возвращение извне, хорошее или плохое - PullRequest
1 голос
/ 10 мая 2019

У меня есть вопрос по теме, о которой я читал, но все еще смущен в одном отношении.

До сих пор я придерживался правила ESlint jsx-no-bind, чтобы предотвратить проблемы с мелким рендерингом рек и проблемами с производительностью.

Проблема в том, что функция стрелки в методе рендеринга воссоздается при каждом рендеринге.

Но что, если в функциональном компоненте функция стрелки объявлена ​​вне возврата, я бы предположил, что она не будет воссоздана при каждом рендеринге, а скорее будет указывать на одну и ту же функцию каждый раз. Но правило ESlint jsx-no-bind предупредит меня, что я не должен этого делать.

Вот пример того, как я обычно делаю это с компонентом Class

class Click extends React.Component {
  handleClick = (event) => {
    const { onClick, id } = this.props

    onClick(id)
  }

  render () {
    return (
      <button onClick={this.handleClick}>
    )
  }
}

А вот как я видел, как это делается с функциональным компонентом

const Click = ({ onClick, id }) => {
   const handleClick = () => {
      onClick(id)
   }

   return <button onClick={handleClick} />

}

В последнем случае ESlint предупредит меня о том, что в JSX не используется функция стрелок, но это проблема? Я предполагаю, что это то же самое, что и с функцией класса, в том, что функция не воссоздается при каждом рендеринге.

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