#javascript #reactjs #redux #redux-toolkit
Вопрос:
Я реализовывал метод нарезки в своем коде, но возникла проблема. Когда я пытаюсь получить доступ старомодным способом, используя действия, редукторы, хранилище и типы, это работает. итак, вот мой новый магазин:
import navPannelReducer from './navpannelSlice';
export const store = configureStore({
reducer: {
navPannel: navPannelReducer
}
})
Вот элемент среза:
export const navPannelSlice = createSlice({
name: "navPannel",
initialState: [{
pathnames: [document.location.pathname]
}],
reducers: {
changePathName: (state, action) => {
return { ...state, pathnames: action.payload }
},
},
});
export const {
changePathName
} = navPannelSlice.actions;
export default navPannelSlice.reducer;
Здесь я пытаюсь получить переменную:
const dispatch = useDispatch();
const pathnames = useSelector(state => state.pathnames.pathnames[0]);
Это то, что я получаю, если регистрирую свое состояние:
Кроме того, я использую функцию из состояния, которая обрабатывает событие onClick:
onClick={() => { dispatch(changePathName(['/home'])) }}
Ошибка, которую я получаю при запуске своего приложения: «Ошибка типа: Не удается прочитать свойства неопределенных (чтение «путей»)»
Ответ №1:
Потому что вы используете navPannel
в редукторе. Так что просто обновите вот так:
const pathnames = useSelector(state => state.navPannel.pathnames[0]);
Комментарии:
1. Я попробовал это сделать, но ничего не вышло. Наконец, чего я не понял, так это создания нового объекта внутри функции « configurestore ()». Таким образом, ` ` const пути = useSelector(состояние => состояние.navPannel[0].пути[0]);« работает правильно.