#javascript #reactjs #react-native #redux #react-redux
Вопрос:
Я дважды отправляю в магазин redux из своего функционального компонента, используя крючки redux.
Когда я отправляю их по отдельности, как это, только один из них хранится в моем магазине redux, так как он, кажется, обновляется каждый раз и сохраняет только один. Как я могу отправить их вместе или предотвратить обновление хранилища redux и потерю первой полезной нагрузки при отправке??
dispatch({ type: "access_token", payload: googleUser.accessToken, }); dispatch({ type: "firebase_userId", payload: result.user.uid, });
Магазин Redux
import React from "react"; import symbolicateStackTrace from "react-native/Libraries/Core/Devtools/symbolicateStackTrace"; import { applyMiddleware, createStore } from "redux"; import thunk from "redux-thunk"; const initialState = { access_token: "", firebase_userId: "", }; const counterReducer = ( state = initialState, action ) =gt; { if (action.type === "access_token") { return { access_token: action.payload, }; } if (action.type === "firebase_userId") { return { firebase_userId: action.payload, }; } return state; }; const store = createStore(counterReducer, applyMiddleware(thunk)); export default store;
Ответ №1:
В вашем редукторе вам всегда нужно возвращать копию текущего состояния. В этом-то и проблема. Нет ничего плохого в том, как вы отправляете действия.
const counterReducer = ( state = initialState, action ) =gt; { if (action.type === "access_token") { return { // copy amp; update state ...state, access_token: action.payload, }; } if (action.type === "firebase_userId") { return { // copy amp; update state ...state, firebase_userId: action.payload, }; } return state; };
Комментарии:
1. я попробовал это сделать, но отправляется только access_token… когда я регистрирую состояние, я получаю access_token и пустую строку для идентификатора firebase_userId
2. Это сработало вместе с тем, я обнаружил еще одну проблему, не связанную с этим, которая вызывала проблемы, но это было правильно, чтобы заставить это работать