У меня есть следующая функция (в компоненте FilterGroupSection), которая вызывается в методе рендеринга компонента:
renderFilterGroups() {
const {filterGroupsData, activeId} = this.state;
let isActive;
// get an array of FilterGroup objects from the filterGroup data
const filterGroups = filterGroupsData.map((filterGroupData, index) => {
const key = filterGroupData.key;
const filters = filterGroupData.filters;
if (key === activeId) {
isActive = true;
} else {
isActive = false;
}
return (
<FilterGroup
key={key}
id={filterGroupData.id}
selectFilterGroup={() => {
this.selectFilterGroup(key);
}}
removeFilterGroup={e => {
this.removeFilterGroup(key, e);
}}
deselectFilter={(
filterGroupId,
filterIndex,
filterName
) => {
this.handleFilterDeselection(
filterGroupId,
filterIndex,
filterName
);
}}
isActive={isActive}
filters={filters}
/>
);
});
// add conjunction object between each filterGroup
const filterGroupsConjunctions = [];
for(const filterGroup of filterGroups) {
if(filterGroupsConjunctions.length > 0){
const conjunction = <Conjunction key={uuid()} />
filterGroupsConjunctions.push(conjunction);
}
filterGroupsConjunctions.push(filterGroup);
}
return filterGroupsConjunctions;
}
Метод возвращает массив объектов FilterGroup и Conjunction. Объекты FilterGroup создаются на основе массива данных в состоянии, и объект Conjunction добавляется между несколькими FilterGroups.
Компонент Conjunction имеет свое собственное состояние, которое имеет свойство value. Каждый раз, когда добавляется новая группа FilterGroup, все объекты Conjunction воссоздаются в соответствии со строкой (в приведенной выше функции):
const conjunction = <Conjunction key={uuid()} />
Это означает, что состояние объекта Conjunction сбрасывается при каждом добавлении новой группы FilterGroup. Я не хочу, чтобы состояние объекта Conjunction было сброшено. Как я могу предотвратить это?
Вначале я подумал, что, возможно, мне следует перенести некоторые из функций, описанных выше, в метод жизненного цикла компонента.
Ценю любые советы.