компонент и мапится. Проблема в том что когда в store обновляются данные то данный компонент тоже ререндерится. Как можно сделать что бы компонент ререндерился (данные мапились) только если новые пропсы ??? Подскажет кто ?
react memo это не оно?
А что за стор?
А что в массиве очень много данные?
Memo в компоненте не помогает. А на вызов ( const a = memo(() => someA);) не работает. Говорит что ребёнок не реакт. Я того и подумал что что-то не так делаю.
Это какой-нибудь редакс или что?
Store от mobx
ну так сделайте реактом небось не разметку вернули
Ты хочешь, чтобы компонент, который рендерит массив твоих элементов, не реагировал на изменения этого массива?
Так оно и так все реактом сделанно. У меня вопрос больше в том можно ли как-то сделать так что бы компонент ререндерился только если новые пропсы, а если старые то игонрить.
Да, обернуть компонент в React.memo и убрать подписки на стор из тела компонента
Подписок* никаких нет. В компоненте только мапится массив которые передается с родителя где обявляется Стор. Если этот вариант const comonentMemo = memo(() => <component data={store.data} />); То такая ошибка: Objects are not valid as a React child (found: object with keys {$$typeof, type, compare}). If you meant to render a collection of children, use an array instead. Когда внутри компонента только один мапер data и все.
Компоненты ведь с большой буквы у тебя называются?
не делай мап внутри компонента, лучше созда компонент const A = () => <div>{name}</div> а в родителе сделай const B = () => ( <> {arr.map(data) => ( <A name={data.name} /> )) </> )
Ну подозреваю, что тогда нужно будет именно этот компонент мемоизировать)0
ну и компонент export default memo(A);
Обсуждают сегодня