Я использую реагирующую нативную навигацию и избыточность для управления состоянием. Я регистрирую каждый Компонент как WrappedComponent, подключая его к хранилищу избыточности. Это работает очень хорошо и очень похоже на код примера atoami из официальной документации по реакции-родной навигации: https://wix.github.io/react-native-navigation/#/docs/showcases
import { Provider } from "react-redux";
import store from "./config/store";
...
function WrappedComponent(Component) {
return function inject(props) {
const EnhancedComponent = () => (
<Provider store={store}>
<Component {...props} />
</Provider>
);
return <EnhancedComponent />;
};
}
export function registerScreens() {
Navigation.registerComponent("Initializing", () =>
WrappedComponent(InitializingScreen)
);
Navigation.registerComponent("SignIn", () => WrappedComponent(SignInScreen));
...
}
С объектом магазина:
import { createStore, compose, applyMiddleware } from "redux";
import thunk from "redux-thunk";
import reducers from "../reducers";
const composeEnhancer = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
export default createStore(
reducers,
composeEnhancer(applyMiddleware(thunk))
);
Тем не менее, я не смог найти способ настроить сохранность приставки для этих упакованных компонентов. Я бы не хотел делать это в функции WrappedComponent
, потому что тогда он вызывался бы для каждого отдельного компонента. Я также не мог найти четкую документацию по этому вопросу.
Полагаю, я мог бы также использовать AsyncStorage, но предпочел бы использовать его вместе с Redux-persist. Кто-нибудь знает, как это сделать?