Автор оригинала: FreeCodeCamp Community Member.
Dheeraj Deekay
Если вы прочитали официальные документы RACT (и вы должны, как это один отличный ресурс по реагированию), вы заметите Эти линии :
Реквизиты никогда не должны быть обновлены. Мы должны использовать их как есть. Звучит жестко справа? Но реагирование имеет свои причины этого правила, и я довольно убежден своими рассуждениями. Единственное предостережение, однако, что есть ситуации, когда нам может потребоваться инициировать обновление опоры. И мы скоро узнаем, как.
Рассмотрим следующую линию кода из родительского компонента:
Это простая линия, которую каждый разработан реагирование, вероятно, знаком. Вы называете дочерний компонент. Хотя вы делаете это, вы также передаете состояние родителей ( ParentName
) для ребенка. В дочернем компоненте это состояние будет доступно как This.proops.childname.
Справедливо.
Теперь, если требуется какое-либо изменение имени, родина
будет изменено у родителя, и что изменение будет автоматически передано ребенку, как это имеет место с механизмом реагирования. Эта настройка работает в большинстве сценариев.
Но что, если вам нужно обновить принцип дочернего компонента, и знание необходимого изменения и триггера для изменения его известно только ребенку? Учитывая способы реагирования, данные могут течь только от топ-книзиторов I.e., От родителя к ребенку. Итак, тогда как мы должны общаться с родителем, что требуется изменение для опоры?
Ну, хотя это анти-шаблон и не рекомендуется, Devs, который написал язык, у нас покрыл. Сюрприз!
Мы можем сделать это с обратными вызовами. Я знаю, нет удивителя там! Кажется, они пригодны для каждой проблемы, с которой мы сталкиваемся здесь. Хорошо, хорошо, теперь как?
Представьте, что приведенный выше вызов ребенку был изменен таким образом:
Теперь в дополнение к опору детское значение
Наш нужен ребенок также имеет событие под названием OnMechange
незащищенный. Это способ разрешить проблему. Наш ребенок сделал свою роль. Теперь это очередь родителей делать то, что требуется. И это не нужно раздражать. Все, что ему нужно сделать, это определить функцию Onchange
в виде
function onChange(newName) { this.setState({ parentName: newName });}
Вот и все. Теперь всякий раз, когда и где бы в дочернем компоненте мы хотим обновить родина
опоры, все, что нам нужно сделать, это позвонить ` This.props.OnnameChange («Мое новое имя»)
И VUILà! У вас будет то, что вы желаете. Вот и все. Сделано и посыпается.
Надеюсь, что это было легко понять. Дайте мне знать в комментариях по поводу каких-либо трудностей или разных способов, которыми он мог быть проще. Спасибо.
Последняя вещь.
Реагировать спорить против этого, и они довольно правы в этом. Это анти-шаблон. Поэтому, когда вы столкнетесь в такой ситуации, проверьте, можете ли вы поднять ваше состояние вверх или, если есть, вы можете сломать свой компонент. Это может звучать без того, но знать, что это так, как он должен быть в реакции!
Счастливое кодирование.