Субкомпоненты в компонентах без сохранения состояния - PullRequest
0 голосов
/ 01 ноября 2018

Я довольно много гуглил, но не смог найти ответ на этот вопрос, я чувствую себя так глупо.

В компонентах с состоянием я обычно пишу некоторые части в виде небольших функций, таких как

renderSmth = () => (
    <div>
        ...
    </div>
);

, а затем используйте его по вызову в основном методе рендеринга.

Что касается компонентов без состояния, когда я пишу части таким же образом, т.е.

const renderSmth = () => (
    <div>
        ...
    </div>
);

eslint предупреждает меня об отсутствии мультикомпов. Насколько я понимаю, пишу так

const smth = (
    <div>
        ...
    </div>
);

должен дать тот же результат, просто использование будет немного другим - не вызов функции.

Правильно ли я понимаю, что компоненты без сохранения состояния пересчитываются при каждом повторном рендеринге? Законен ли последний путь или есть какие-то недостатки?

1 Ответ

0 голосов
/ 01 ноября 2018

Разница в том, что если вы объявите что-то как переменную вместо функции, вы не сможете получить доступ к реквизиту.

Если вам не нужно использовать реквизит внутри чего-то, то это путь. В противном случае вы можете объявить его вложенным в вашу основную функцию, например так:

renderSmth = (props) => {
  const smth = (props) => (
    <div>...</div>
  );

  return (
    <div>
      ...
      smth(props)
    </div>
  );
};
...