Могу ли я использовать функции стрелок вместо обычных функций для React Hooks? - PullRequest
4 голосов
/ 21 марта 2019

Можно ли также использовать функции стрелок с новым синтаксисом React Hook? в чем будет разница и / или это может вызвать проблемы?

синтаксис документации:

function Example() {

  const [count, setCount] = useState(0);

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>
        Click me
      </button>
    </div>
  );
}

Функция стрелки:

 const Example = () => {

  const [count, setCount] = useState(0);

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>
        Click me
      </button>
    </div>
  );
}

Ответы [ 3 ]

6 голосов
/ 21 марта 2019

Разница между объявлением функционального компонента с использованием function или const будет такой же, как разница между functional expressions и functional declaration

Например, Function declarations загружается перед выполнением любого кода, в то время как Function expressions загружается только тогда, когда интерпретатор достигает этой строки кода, то есть рендеринг функционального компонента, созданного с использованием синтаксиса function, может быть выполнен до того, как он будет определен в коде, пока если он определен с использованием expression, то он должен быть объявлен перед использованием

Короче говоря, function declarations подняты, тогда как function expressions не

С точки зрения использования обоих вышеуказанных синтаксисов для создания компонентов, вы можете использовать любой из них, если вы используете подъем в учетную запись

4 голосов
/ 21 марта 2019

Краткий ответ: да, вы можете .

Функции стрелок и объявления / выражения функций не эквивалентны. Однако, если функция, которую вы хотите заменить, не использует this, arguments и не вызывается с new, тогда вы можете использовать любой стиль, который вы предпочитаете.

1 голос
/ 21 марта 2019

То же самое.Разница будет одинаковой с каждой функцией против функции стрелки (не имеет собственной области видимости), но для ловушек реагирования это то же самое

...