Как сопоставить массив внутри объекта в Redux React?

Я использую React и redux-toolkit для фронтенд-разработки. Когда я пытаюсь отобразить(), массив внутри объекта весь экран становится пустым. Это структура данных, которую я получаю из состояния редукции. изображение структуры данных Это экран, на котором я вызываю состояние из хранилища избыточности:

const { id } = useParams();
  const { mocktest, isLoading, isError, message } = useSelector(
    (state) => state.mocktest
  );
  console.info(mocktest);
useEffect(() => {
    if (isError) {
      toast.error(message);
    }
    dispatch(getMockTestById(id));
  }, [isError, message, dispatch, id]);

Это мой кусочек:

export const getMockTestById = createAsyncThunk(
  'mocktest/getMockTestById',
  async (id, thunkAPI) => {
    try {
      // const token = thunkAPI.getState().auth.user.token;
      return await mockTestServices.getMockTestById(id);
    } catch (error) {
      const message =
        (error.response &&
          error.response.data &&
          error.response.data.message) 
        error.message 
        error.toString();
      return thunkAPI.rejectWithValue(message);
    }
  }
);

Вот как я пытаюсь отобразить() или получить доступ к данным:

{mocktest.questionSet.map((qSet) => (
                    <h4 className = "text-center">{qSet.setName}</h4>
                  ))}

Это то, что я ожидал, что setName будет отображаться в теге h4 Я также попытался добавить this.props.

Вот CodeSandBox заданных сценариев

Добавьте строку <pre>{JSON.stringify(mocktest, null, 2)</pre> и проверьте содержимое элемента pre.

DraganS 27.11.2022 13:01

Он показывает все данные, полученные из бэкэнда через redux и axios.

Shadow 27.11.2022 14:57

Похоже, ваше начальное состояние не определено, и страница просто разбилась. Попробуйте проверить значение mocktest в этом компоненте, и если значение не определено, добавьте туда несколько проверок.

Muhammad Nouman Rafique 27.11.2022 18:19

@MuhammadNoumanRafique В исходном состоянии mocktest есть все необходимые данные. После такого сопоставления вся страница становится белой {mocktest.questionSet.map((qSet) => ( <h4 className = "text-center">{qSet.setName}</h4> ))}

Prakash Sharma 27.11.2022 18:59

Можете ли вы создать песочницу для своего кода, чтобы кто-то мог помочь вам найти эту проблему?

Muhammad Nouman Rafique 28.11.2022 01:52
Поведение ключевого слова "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) для оценки ваших знаний,...
2
5
264
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Здесь вы пропустили необязательную цепочку перед функцией карты, поскольку она проверяет, является ли массив, который вы отображаете, недействительным или нет.

    {mocktest?.questionSet?.map((qSet) => (
                  <div key = {qSet._id} id = "body">

Этот ответ правильный, но это не тернарный оператор ; это необязательная цепочка

JMA 28.11.2022 19:42

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