Как использовать ‘useDispatch’ и ‘useSelector’ в компоненте на основе классов

#javascript #reactjs #redux #react-redux #react-hooks

#javascript #reactjs #сокращение #реагировать-redux #реагирующие хуки

Вопрос:

У меня есть один класс, в котором я использую useDispatch и устанавливаю свои данные в reducer, и я хочу использовать свои данные в другом классе, например, как я использую useDispatch в функциональном компоненте и использую useSelector , я могу извлекать данные из любого места внутри проекта, например, я хочу в компоненте на основе классов.

 import { createSlice } from "@reduxjs/toolkit";

export const userSlice = createSlice({

  name: "user", initialState: {

    user: null,

  },

  reducers: {

    setUser: (state, action) => {

      state.user = action.payload.user;

    },

    logout: (state) => {

      state.user = null;

    },

  },

});

export const { setUser, logout } = userSlice.actions;

export const selectUser = (state) => state.user;

export default userSlice.reducer;

// functional component One ..........................
const dispatch = useDispatch();
dispatch(setUser({ user: "om" }));

// functional component two  ..........................
const selectcter =  useSelector(selectUser);
console.log(selectcter);
 

»
например, я хочу использовать в компоненте на основе классов какую-нибудь помощь?

Комментарии:

1. Хуки нельзя использовать в компонентах класса, вы можете использовать connect или не использовать классы, вот несколько причин не использовать классы.

Ответ №1:

Вы не можете смешивать крючки с реакцией внутри компонента класса. Либо вы меняете компонент класса на функциональный компонент с помощью перехватов, либо используете логику сокращения, соответствующую компонентам класса.

Ответ №2:

на самом деле, useSelect и useDispatch — это не что иное, как просто замена mapStateToProps и mapDispatchToProps, которые мы передаем в connect hoc, когда пытаемся подключить наш компонент к хранилищу redux.

Когда вы работаете с компонентом класса, вы не можете использовать useDispatch и useSelector, потому что это хуки, которые react-redux предоставляет для использования в функциональных компонентах для того же поведения, которое connect обеспечивает в компоненте класса. Итак, в вашем случае нужно посмотреть, как использовать connect из react-redux и как передать mapDispatchToProps и mapStateToProps, если вы используете компонент класса. вот документация для connect