Также есть стейт значение инпута. Также форма по добавлению нового комментария. Также есть код, который рендерит эти комментарии: 
                  
                  
                            {comments.length ? (
                  
                  
                              comments.map((item) => {
                  
                  
                                // здесь нужен useMemo
                  
                  
                                console.log('update 1')
                  
                  
                                return (
                  
                  
                                  <Comment key={item.id} comment={item} remove={removeComment} />
                  
                  
                                )
                  
                  
                              })
                  
                  
                            ) : (
                  
                  
                              <Skeleton />
                  
                  
                            )}
                  
                  
                  
                  
                  
                  проблема: при КАЖДОМ изменении стейта значение инпута, у меня каждый раз перерисовывается этот массив. то есть я что то пишу в инпута, чтобы добавить комментарий, при этом у меня каждый раз вызывается лог update 1. Как это исправить то ? 
                  
                  
                  
                  
                  
                  https://codepen.io/fatb0yy/pen/KKXxoay?editors=1010
                  
                  
                
вытащи components.map в отдельный компонент и оберни в memo. Не будет перерисовываться
спасибо, сейчас буду разбираться !!
не должно, если не будет изменять массив
Не забудь функцию в useCallback завернуть
Ту, которая removeComment
я изменяю массив только при добавлении нового коммента: setComments([...comments, { ...comment, id: uuidv4(), date: dateNow }]) а инпут у меня просто управляемый
хорошо, спасибо за помощь
у меня получилось: const CommentsList = memo(({ comments, removeComment }) => { console.log('2') return ( <TransitionGroup> {comments.map((item) => ( <CSSTransition key={item.id} timeout={380} classNames='comment'> <Comment comment={item} remove={removeComment} /> </CSSTransition> ))} </TransitionGroup> ) })
Обсуждают сегодня