标签: redux-persist

如何解决:console.error:“ redux-persist无法创建同步存储。回退到” noop“存储

我正在尝试在React Native应用程序中设置redux-persist。

但是我遇到了这个错误:

console.error:“ redux-persist无法创建同步存储。回退到” noop“存储

我尝试将“ src / redux / index.js”中的存储从存储更改为AsyncStorage,但仍然遇到相同的错误:

import AsyncStorage from '@react-native-community/async-storage';

const config = {
  key: "root",
  storage: AsyncStorage // Attempted to fix it (but failed)
  // storage // old code
};
Run Code Online (Sandbox Code Playgroud)

这是其他代码:

在App.js中:

import React, { Component } from "react";
import { Provider } from "react-redux";
import { persistStore } from "redux-persist";
import { PersistGate } from "redux-persist/es/integration/react";
import store from "@store/configureStore";
import Router from "./src/Router";

export default class ReduxWrapper extends Component {
  render() …
Run Code Online (Sandbox Code Playgroud)

react-native redux-persist

16
推荐指数
7
解决办法
4922
查看次数

如何在结束测试之前等待Redux Persist再水化

我有以下代码:

const App = () => {
    return (
        <Provider store={store}>
            <PersistGate persistor={persistor} loading={<Text>Loading!</Text>}>
                <ConnectedRootComponent />
            </PersistGate>
        </Provider>
    );
};

export default App;
Run Code Online (Sandbox Code Playgroud)

它使用redux-persist来补充状态,在此之前,它将显示加载属性中的内容.我有一个Jest测试(只是默认的一个带有反应原生的开箱即用):

it('renders without crashing', () => {
  const rendered = renderer.create(<App />).toJSON();
  console.log("Rendering: " + JSON.stringify(rendered));
  expect(rendered).toBeTruthy();
});
Run Code Online (Sandbox Code Playgroud)

但是虽然测试通过,但我发现仍然发生的动作,persist/PERSIST以及persist/REHYDRATE测试中打印到控制台的值(渲染输出)是:

{
    "type": "Text",
    "props": {
        "accessible": true,
        "allowFontScaling": true,
        "ellipsizeMode": "tail"
    },
    "children": ["Loading!"]
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是等到redux-persist完成水合,然后检查渲染值.我怎样才能做到这一点?

reactjs jestjs react-native redux-persist

14
推荐指数
1
解决办法
2049
查看次数

React Native,Android生命周期和导航

我们正在构建一个React Native应用程序,它使用redux-persist来存储应用程序状态,包括导航状态.我想这个应用程序在导航方面表现得像本机应用程序:

当原生Android应用程序进入后台时,最终会被操作系统停止,然后移动到前台,它将在用户之前停止的活动中恢复.如果同一个应用程序被用户杀死(或崩溃),它将在主Activity上打开.

对于RN应用程序,这意味着redux-persist应该持久化并恢复应用程序的componentWillMount中的导航状态,但前提是应用程序未被用户杀死.

以下代码有效:

componentWillMount() {
  if (global.isRelaunch) {
    // purge redux-persist navigation state
  }
  global.isRelaunch = true;
...
Run Code Online (Sandbox Code Playgroud)

但它看起来很乱,我也不明白为什么全球范围仍然存在.

检测RN应用程序是否从后台重新打开的正确方法是什么?(理想情况下支持iOS)

javascript react-native react-native-android redux-persist

12
推荐指数
1
解决办法
2576
查看次数

React Native“PersistGate”不能用作 JSX 组件。其实例类型“PersistGate”不是有效的 JSX 元素

我在 React Native 应用程序中使用@redux/toolkitwith 。redux-persistTypeScript

商店.ts

    import { configureStore } from '@reduxjs/toolkit';
    import { combineReducers } from 'redux';
    import { persistReducer, persistStore } from 'redux-persist';
    import thunk from 'redux-thunk';
    import AsyncStorage from '@react-native-async-storage/async-storage';
    import calenderReducer from './reducer/calender';

    const reducers = combineReducers({
    graph: calenderReducer,
    });

    const persistConfig = {
    key: 'root',
    storage: AsyncStorage,
    };

    const persistedReducer = persistReducer(persistConfig, reducers);

    export const store = configureStore({
    reducer: persistedReducer,
    devTools: process.env.NODE_ENV !== 'production',
    middleware: [thunk],
    });

    // Infer the `RootState` …
Run Code Online (Sandbox Code Playgroud)

react-native redux-persist redux-toolkit

11
推荐指数
1
解决办法
6058
查看次数

React Native Navigation和Redux Persist

我正在尝试将redux-persist与wix react-native-navigation集成.但是,我无法找到任何说明集成两个库所需的样板代码的示例或文档.

我想知道是否有人想分享他们的解决方案,如果他们已经解决了这个问题?

react-native redux react-native-navigation redux-persist

10
推荐指数
1
解决办法
8612
查看次数

如何使用 redux-toolkit 配置 redux-persist?

我已经使用传统的 react-redux 设置配置了 redux-persist,如下所示:

onst persistConfig = {
  key: 'root',
  storage,
  whitelist: ['todos'],
};

const persistedReducer = persistReducer(persistConfig, reducer);

const store = createStore(
  persistedReducer,
  window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
);

const persistor = persistStore(store);

// wrapper
const StateProvider = ({ children }) => {
  return (
    <Provider store={store}>
      <PersistGate loading={<div>Loading...</div>} persistor={persistor}>
        {children}
      </PersistGate>
    </Provider>
  );
};
Run Code Online (Sandbox Code Playgroud)

但是,如何使用 redux-toolkit 对其进行配置?到目前为止,我已经尝试过这个:

const persistedReducer = persistReducer(persistConfig, todoreducer);
const store = configureStore({
  reducer: {
    todos: persistedReducer,
  },
});

const persistor = persistStore(store);

// wrapper
const StateProvider …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs redux react-redux redux-persist

10
推荐指数
3
解决办法
8588
查看次数

如何在 Next.js 中保留 redux 状态而不阻塞 SSR?

我有一个无服务器 Next.js 应用程序,其中有一些组件依赖于从 redux 存储传递下来的数据。目前,我的方法需要 redux-persist 在用户导航时保存存储,否则如果存储中的数据不存在,上述组件将崩溃。我遇到的问题是,包裹整个应用程序的 redux-persist 的 PersistGate 阻止了对站点的外部请求访问每个页面内的动态元标记。像 metatags.io 这样的工具只能看到来自 persistgate 的加载组件。

如果我删除门,那么标头标签将呈现良好,但 redux 状态不再持久,如果用户刷新某些页面上的页面,则会导致问题。

我已经尝试了此 github 问题中讨论的一些方法,但有条件地包装 persistgate 仍然会导致问题,并且“next/head”组件在实际主体而不是头部内呈现。

我对 Next.js 还很陌生,它提供的 SEO 改进是我选择它而不是普通 React 的原因。我愿意接受一些不涉及 redux-persist 以及可能使用本地存储的模式建议。

这是 _app.js 目前的布局:

import App from 'next/app';
// Redux:
import { useStore } from 'redux/store';
import { Provider } from 'react-redux';
import { persistStore } from 'redux-persist';
import { PersistGate } from 'redux-persist/integration/react';
import LoadingView from 'components/base/LoadingView';
import Layout from 'components/base/Layout';
// i18n wrapper:
import { appWithTranslation …
Run Code Online (Sandbox Code Playgroud)

meta-tags redux server-side-rendering next.js redux-persist

9
推荐指数
0
解决办法
3739
查看次数

哪个库更适合离线支持:redux-offline 或 react-native-offline?

需要关于使用 redux 的大型 React Native 移动应用程序使用哪个库的建议?redux-offlinereact-native-offline

我需要定期检查连接状态,根据连接状态呈现视图,在离线时将操作添加到队列中并在在线时运行它们,如果存在一些矛盾则取消操作,并离线保存/重新水化数据。

mobile react-native redux react-redux redux-persist

8
推荐指数
1
解决办法
3039
查看次数

如何在用户允许之前阻止 redux-persist 使用 LocalStorage?

在使用 LocalStorage 之前,我想通过单击横幅按钮来获得用户的同意。LocalStorage 通过redux-persist. 我正在使用reduxredux-persist如下:

ReactDOM.render(
  <Provider store={store}>
    <PersistGate loading={null} persistor={persitor} >
      <MyAppRouter />
    </PersistGate>
  </Provider>,
  document.getElementById("root")
)
Run Code Online (Sandbox Code Playgroud)

storepersistor来自来了

import { createStore } from "redux"
import { persistStore, persistReducer } from "redux-persist"
import storage from "redux-persist/lib/storage"
import { rootReducer } from "../reducers/index"

const persistConfig = {
  key: "root",
  storage,
}

const persistedReducer = persistReducer(persistConfig, rootReducer)

const store = createStore(persistedReducer)
const persistor = persistStore(store as any)
// `as any` is necessary …
Run Code Online (Sandbox Code Playgroud)

cookies local-storage reactjs redux redux-persist

8
推荐指数
1
解决办法
2214
查看次数

使用 react-native-sqlite-storage React Native 离线应用

我是本机反应的新手。我想构建一个离线 React Native 应用程序来存储用户数据(基本用户详细信息、用户个人文档、图像等)。我已经浏览了一些关于 react-native-sqlite-storage 的文档,我想整合它。但不确定,

  1. 如果用户删除应用程序数据时我可以恢复所有用户数据
  2. 使用 react-native-sqlite-storage 比 redux-persist 进行离线应用开发有什么优势?

android ios react-native redux-persist react-native-sqlite-storage

8
推荐指数
1
解决办法
1375
查看次数