Я думаю, что проблема связана с методом getContainerContent
в вашем дочернем компоненте.
Почему один дочерний компонент должен интересоваться данными, которые принадлежат другим дочерним компонентам?
Способ, которым вы можете решить эту проблему, - это сначала объявить в родительском компоненте, с какими параметрами вы собираетесь сопоставить фильтр при отображении дочерних компонентов.
Затем вы можете перебрать эти объявленные реквизиты и решить, должен ли компонент отображать дочерний компонент или нет .
// parent comp
private shouldDisplayElement (element, searchTerm: string): boolean {
const propsToMatchFiltersAgainst = ['book_title', 'book_author', 'buy', /* etc... */];
let shouldDisplay = false;
for (const p of propsToMatchFiltersAgainst) {
if (`${element[p]}`.toLowerCase().includes(searchTerm.trim())) {
shouldDisplay = true;
}
}
return shouldDisplay;
}
// parent's render fn
<div className={styles.container}>
{this.state.importedBooks.map((element, index) => (
this.shouldDisplayElement(element, this.state.searchTerm)
? <Tile
key={index}
buy={element.amazon_product_url}
img={element.book_image}
summary={element.description}
url={element.book_image}
book_author={element.author} book_title={element.title}
/>
: null
))}
</div>
Таким образом, учитывая текущую ситуацию, вам больше не нужно использовать метод getContainerContent
в дочернем компоненте.