Я использую 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 заданных сценариев
Он показывает все данные, полученные из бэкэнда через redux и axios.
Похоже, ваше начальное состояние не определено, и страница просто разбилась. Попробуйте проверить значение mocktest в этом компоненте, и если значение не определено, добавьте туда несколько проверок.
@MuhammadNoumanRafique В исходном состоянии mocktest есть все необходимые данные. После такого сопоставления вся страница становится белой {mocktest.questionSet.map((qSet) => ( <h4 className = "text-center">{qSet.setName}</h4> ))}
Можете ли вы создать песочницу для своего кода, чтобы кто-то мог помочь вам найти эту проблему?
Здесь вы пропустили необязательную цепочку перед функцией карты, поскольку она проверяет, является ли массив, который вы отображаете, недействительным или нет.
{mocktest?.questionSet?.map((qSet) => (
<div key = {qSet._id} id = "body">
Этот ответ правильный, но это не тернарный оператор ; это необязательная цепочка
Добавьте строку
<pre>{JSON.stringify(mocktest, null, 2)</pre>
и проверьте содержимое элементаpre
.