Я новичок в React-Redux, и у меня проблема со связью между редуктором и магазином.
Это идея, на которой я основываюсь:
У меня есть компонент «Вход», который содержит кнопку и два текстовых ввода, и когда я нажимаю на нее, я отправляю действие в редуктор. Затем я обновляю состояние и снова отправляю его в пользовательский интерфейс (это то, как я понимаю логику, поправьте меня, если я ошибаюсь). Проблема возникает в редьюсере, он никогда не входит туда, но да в файл действия (проверено с помощью console.infos). Может коннект не работает? или есть в магазине часть?
Вот отпишусь как я это сделал
action.js, только с двумя операциями
const logout = () => {
return {
type: "USER_LOGOUT",
payload: false,
};
};
const login = () => {
return {
type: "USER_LOGIN",
payload: true,
};
};
export { logout, login };
Реализация reducer.js, изменение только одного логического значения
const initialState = {
logged: false,
};
export default (state = initialState, action) => {
if (action.type === "USER_LOGOUT") {
return {
...state,
logged: false,
};
}
if (action.type === "USER_LOGIN") {
return {
...state,
logged: true,
};
}
return state;
};
index.js (магазин), вот как я объявляю часть магазина
import { createStore, combineReducers } from "redux";
import loginReducer from "./reducer";
const reducers = combineReducers({
loginReducer,
});
const store = createStore(reducers);
export default store;
Login.js, только сенсорная часть
import { logout, login } from "../redux/actions";
import { connect } from "react-redux";
...
connect(null, { logout, login }, Login);
...
<TouchableOpacity>
...
onPress = {() => checkValidation()}
...
</TouchableOpacity>
Вот checkValidation, который вызывает действие "логин"
checkValidation() =>
...
login();
...





Вы не отправляете действие. Чтобы Redux узнал об экшене, вы должны отправить его.
Если вы используете компонент класса, вам нужно подключите компонент и передайте ему действие отправки из избыточности.
Я предлагаю вам использовать хуки, потому что это проще.
1-Импортируйте хук useDispatch
import { useDispatch } from "react-redux";
2-Создать рассылку:
const dispatch = useDispatch();
3-Отправьте свое действие: проверитьпроверка() =>
...
// Since your function login already returns the action object:
dispatch(login());
...