Я знаю, что React действительно отличает this.state
. Но когда вы находитесь в дочернем компоненте, diff выполняется на this.props
. Поэтому мне было интересно, как отличается система diff, если значение prop
является функцией? Является ли это плохой практикой (как в случае плохого для перфоратора или чего-то еще), если я помещаю функцию в this.props или this.state?Хорошая практика для передачи функции в реквизитах?
ответ
Если вы передадите дочернюю компоненту функцию как props
, то алгоритм diff будет постоянно запускаться. Если вам интересно об этом случае, вы можете реализовать shouldComponentUpdate
, где вы можете игнорировать свойства, содержащие функции.
Вы можете экспериментировать с this example
Пропустите несвязанную функцию компоненты ребенка, и у ребенка использовать метод экземпляра, например:
class Container extends Component {
deleteItem(index) {
actionThatDeletesSomething(index);
}
render(){
return(
<ChildComponent deleteItem={ this.deleteItem } />
)
}
}
class ChildComponent extends Component {
render(){
return(
<a onClick={ this.props.deleteItem(index) } />
)
}
}
Не могли бы вы объяснить это немного больше, я не понимаю :( – Noitidart
отредактировал. Дайте мне знать, если это ясно. –
Ах, спасибо, это интересно, мне нужно больше думать об этом, я не понимаю его полностью, но эта недостаточность с моей стороны . Сообщить об этом после того, как я подумаю об этом :) – Noitidart
- 1. Хорошая практика передать dbcontext функции?
- 2. Хорошая практика для явного возврата значений функции?
- 3. Хорошая практика для многопоточности
- 4. response.js: события вместо передачи обработчика в реквизитах
- 5. Передача функции в реквизитах компоненту
- 6. «Хорошая практика»?
- 7. Хорошая практика или плохая практика
- 8. GetHashCode хорошая практика?
- 9. Хорошая практика javascript?
- 10. Хорошая практика сохранения результата функции для последующего использования в R
- 11. Хорошая практика для ссылок объектов
- 12. Хорошая практика для инициализации свойств?
- 13. Хорошая практика для вызова System.gc()
- 14. Хорошая практика для перенаправления страниц?
- 15. Хорошая практика для проверки элементов в классе.
- 16. Javafx хорошая практика программирования
- 17. PHP Функции для создания элементов формы. Хорошая практика?
- 18. Хорошая практика AngularJS
- 19. Вложенные фрагменты хорошая практика?
- 20. Хорошая практика использования множителей
- 21. REST хорошая практика проектирования
- 22. Хорошая практика? Dummy object
- 23. Это хорошая практика для разбора строки doc?
- 24. Хорошая практика размещения файлов
- 25. SVN хорошая практика (филиалы)
- 26. Лучшая практика передачи контекста функции обратного вызова
- 27. Guice injector.getInstance() - хорошая практика?
- 28. IOS FMDB Хорошая практика
- 29. Хорошая практика SQLite & ContentProvider
- 30. MVVM: это хорошая практика?
Если вы передаете реквизит 'function' в детском компоненте diff алгоритм будет постоянно запускаться. Если вам это интересно, вы можете реализовать 'shouldComponentUpdate', где вы можете игнорировать свойства, содержащие' functions'. Пример: https://jsfiddle.net/69z2wepo/32508/, вы можете поэкспериментировать с этим примером, просто комментируйте 'shouldComponentUpdate' –
Интересное спасибо очень большое спасибо @ Alexander. Я изучу это, если вы можете переместить это, чтобы ответить Мне хотелось бы принять. – Noitidart