проблема доступа к переменной среза инструментария redux

#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]);« работает правильно.