Использование функции в функции - это нормально. Есть всевозможные статьи, которые вы можете прочитать, если вам следует использовать useCallback
. Я расскажу об этом через секунду.
Нет, вам не нужно передавать реквизиты каждой функции. Причина этого - закрытие и то, что он фиксирует. Здесь - некоторые сведения об этом под закрытием. Ваша стрелочная функция закрывает переменную props, если они ссылаются на нее. Так что нет, вам не нужно передавать его, и проверьте эту ссылку. И Глава 2, если вы действительно хотите покопаться в глубине.
Что касается производительности, то обычно нормально! Однако каждый раз при рендеринге вашего компонента function1
и function2
будут переопределяться. Они будут той же точной функцией (если d3
не изменится), но с другой ссылкой, поэтому старый function1
! == новый function1
, даже если они делают то же самое. Вот почему это имеет значение ...
Хотя для немного больших накладных расходов (для каждого рендеринга компонента, возможно, с сохранением многих рендеров других компонентов или useEffect
выполнений), вы можете провести анализ реакции, если он должен переопределить function1
или function2
, в противном случае сохраняется та же ссылка. Это то, что делает useCallback
. Честно говоря, я использую useCallback
, если не уверен, что эта функция вызовет у меня проблемы. Примером может служить дочерний компонент function1
, переданный в качестве опоры. Эта опора ВСЕГДА будет оцениваться как новое значение при каждом рендеринге родительского элемента, потому что это новая ссылка, если вы не используете useCallback
.