React js скомпилирован с предупреждениями

Я младший бэкэнд-разработчик, но использую библиотеку реагирования в своих проектах-клонах.

После обновления сценария реагирования я начал получать много ошибок в своем проекте. Я решил некоторые из них, как я могу их решить или игнорировать их

узел -v v14.17.0 React js скомпилирован с предупреждениями

React js скомпилирован с предупреждениями

Когда он говорит об отсутствии зависимости, добавьте их ко второму параметру useEffect, например [getAction, params.id, allComments]. Можешь показать свой Line 55?

Geeky Quentin 14.05.2022 14:52

Ошибки очень понятны. Добавьте свойства в свой массив зависимостей useEffect и убедитесь, что ваш filter действительно что-то возвращает.

Andy 14.05.2022 14:54

@GeekyQuentin Какую строку ошибки я должен показать?

Nurettin Şen 14.05.2022 14:55

Не строка ошибки, покажите строку 55 в вашем коде

Geeky Quentin 14.05.2022 14:56

@GeekyQuentin Я добавил изображение

Nurettin Şen 14.05.2022 14:58

Да, поэтому проблема в том, что код внутри оператора else может быть не прочитан и, следовательно, может ничего не возвращать, добавьте возвращаемое значение по умолчанию, которое будет возвращено, если ни одно из условий не удовлетворяет

Geeky Quentin 14.05.2022 14:59

@GeekyQuentin Я очень хорошо понимаю, спасибо. Так что же вызывает эту ошибку? В React Hook useEffect отсутствует зависимость:

Nurettin Şen 14.05.2022 15:02

также почему я получаю эти ошибки при обновлении пакета

Nurettin Şen 14.05.2022 15:03

Можете ли вы добавить свой код useEffect() и для чего вы сортируете CommentLists?

Geeky Quentin 14.05.2022 15:08

@GeekyQuentin Я сделал систему комментариев на YouTube. Я перечислил комментарии. Я написал такую ​​​​функцию, чтобы редактировать комментарий

Nurettin Şen 14.05.2022 15:29
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
11
35
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Второй параметр использованиеЭффект — это массив зависимостей. Когда одна или несколько зависимостей изменились по сравнению с последним рендерингом, эффект будет отозван. Вы получаете эту ошибку, потому что не включили все необходимые переменные или функции в свой массив зависимостей, что может привести к устаревшим данным и неожиданному поведению.

Например, в вашем хуке в PostBody.jsx отсутствует зависимость params.id. Исправление состоит в том, чтобы просто добавить значение в массив зависимостей:

// PostBody.jsx
useEffect(() =>
{
    // Your code here
}, [params.id, ...yourOtherDependencies]) // Add params.id to your dependency array

Сделайте то же самое для крючков, которых не хватает getAction и allComments.

Что касается ошибки filter, вы не возвращаете значение в первом условии:

const newCommentArr = CommentLists.filter((comment, index) =>
{
    if (newComment._id === comment._id)
    {
        indexValue = index
        // You need to return a value!
    }
    else
    {
        return newComment._id !== comment._id
    }
})

Значение, которое вы возвращаете, зависит от того, для чего вы это используете. Вы можете просто изменить свой код на:

const newCommentArr = CommentLists.filter((comment) => newComment._id === comment._id)

или

const newCommentArr = CommentLists.filter((comment) => newComment._id !== comment._id)

в зависимости от того, для чего вы это используете.

`useEffect(() => {fetchSinglePost(params.id) }, [params.id])` это устранило ошибку, но `useEffect(() => {dispatch(fetchSinglePost(params.id)) }, [dispatch] )` почему это неправильно

Nurettin Şen 14.05.2022 15:39

и useEffect(() => { allComments() }, []) Как вы думаете, что я должен дать здесь, таким образом, ошибка действительно решается

Nurettin Şen 14.05.2022 15:47

Просто добавьте функцию allComments в массив зависимостей. useEffect(() => { allComments() }, [allComments])

pez 14.05.2022 15:48

Прошу прощения, но это выдает новую ошибку. Функция allComments изменяет зависимости useEffect Hook (строка 122) при каждом рендеринге. Переместите его внутрь обратного вызова useEffect. В качестве альтернативы, оберните определение «allComments» в собственный useCallback() Hook react-hooks/exhaustive-deps как решить (:

Nurettin Şen 14.05.2022 16:13
typeofnan.dev/… это объясняется здесь, но я не знал, что добавить в хук
Nurettin Şen 14.05.2022 16:19

Если это так, вам нужно определить и вызвать функцию внутри useEffect, использовать useCallback или изменить свою архитектуру. Это тема другого вопроса. Если этот ответ помог решить некоторые проблемы, подумайте о том, чтобы принять его и начать новый вопрос.

pez 14.05.2022 16:24

наконец-то я разобрался, пишу params.id,CommentLists и заканчиваю (: Надеюсь, это правда

Nurettin Şen 14.05.2022 16:25

Чтобы получить помощь, чтобы узнать вашу ошибку линтинга, вы можете настроить ESLint в своем проекте. Или вы можете легко получить советы от расширения VSCode.

Другие вопросы по теме