#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