React Как связать два компонента?

Я создала компонент Grid, который выводит товары. После создала компонент Filter для сортировки и фильтрации товаров. Как он работает? Я через props передаю в него фильтры, название и функцию. То есть массив вот таких вот объектов:

{id:1, name:"by name", function: () => sortByName("name")}

Внутри фильтра вывожу все названия и задаю им событие OnClick()

Эти два компонента Grid и Filter, я вызываю в App. Теперь мне нужно их как то связать, так как функции сортировки находятся в Grid и мне нужно их передать в фильтр. Здесь я связываю компоненты с помощью ref, то есть передаю ссылку на Grid в Filter.

const App = () => {
const ref1 = useRef()
return (
<div>
  <Filter ref = {ref1}/>
  <Grid ref={ref1}  products={products} countOnRow={3} totalCount ={6}/>
</div>
  )}

компонент Grid в укороченном виде. В самом Grid эту ссылку я присваиваю div

const Grid = React.forwardRef((props, ref) => {
const sortByName = (sort) => {
    setItems(items.sort((a,b) => a[sort].localeCompare(b[sort])))
    setProdus([...items.slice(0,startPage)])
    setOkay(!okay)
}
return (
    <div className="container" ref={ref}>
        .....
    </div>
)

Как применить фильтры к Grid?


Ответы (0 шт):