Есть список категорий и блюд:
{positions.map(({ id, name, ref, dishes }) => (
<InView key={id} threshold="0" rootMargin="-50% 0% -50% 0%" onChange={onChangeInView(id)}>
<Group getRootRef={ref} header={<Header mode="secondary">{name}</Header>}>
<Div>
<Grid.Row>
{dishes.map((item) => (
<Grid.Col key={item.id} xs={6}>
<Position
position={item}
count={get(cart.positions, `${item.id}.quantity`, 0)}
onAddPosition={onAddPosition}
onRemovePosition={onRemovePosition}
/>
</Grid.Col>
))}
</Grid.Row>
</Div>
</Group>
</InView>
))}
Есть глупый компонент для отрисовки конкретной позиции:
export const Position = memo(({ position, count, onAddPosition, onRemovePosition }) => {...});
Проблема в том, что все позиции перерендериваются при изменении одной, что не должно быть.
Проблему решил через
React.memo, что доказывает, что пропсы других аналогичных компонентов не изменяются.
Но как показалось,
React.memo можно было избежать.
На что обратить внимание? Или другого способа решения данной проблемы в текущем кейсе нет?