Допустим, у меня есть 3 компонента, подключенных в один родительский.Допустимо ли повторное предоставление детям 3 раза в ReactJS?
Псевдо пример:
<div>
<Parent />
<ChildMetaData />
<ChildData />
</div>
На щелчку <Parent />
я использую следующую функцию, которая передается в качестве опоры:
handleParentClick(tid,sifUser) {
this.setState({
tid : tid ,
sifUser : sifUser
},
() => {
this.loadChildRequestsFromServer();
this.loadUserDataFromServer();
});
}
изменений состояния.
=> Все 3 компонента переделаны.
Когда мои loadChildRequestsFromServer()
заканчивает он изменяет состояние глобальной переменной
=> Все 3 компонента повторной визуализации.
Когда мои loadUserDataFromServer()
заканчивает он изменяет состояние глобальной переменной
=> Все 3 компонента повторной визуализации.
Как вы можете видеть, когда я нажимаю на свой родитель, мои компоненты повторно обрабатывают 3 раза. (Я проверяю это, запустив console.log в одной из функций рендеринга компонента, например <ChildData />
.)
Это приемлемое поведение, или я что-то не так?
Следует отметить, что обе функции «загрузка с сервера» - это вызовы AJAX. А так как loadChildRequestsFromServer()
и this.loadUserDataFromServer()
связаны друг с другом, возможно, мне не следует сразу обновлять состояние после завершения первой функции. Но скорее передайте данные следующей функции и обновите ее там.
Компоненты вашего псевдо-примера не имеют отношения родитель-ребенок, они просто братья и сестры. – Scarysize
Они являются родителями-родителями/мастерами-рабами в базе данных, поэтому я назвал их такими. Я думаю, вы можете игнорировать именование компонентов. Это может смутить людей. Но для меня это семантическое значение. – Paran0a
Вы можете подумать о добавлении необязательного параметра, который подавляет повторную визуализацию, когда вы знаете, что вы будете выполнять несколько инициирующих вызовов последовательно. –