首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redux存储和PouchDB不与redux-pouchdb同步

Redux存储和PouchDB不与redux-pouchdb同步
EN

Stack Overflow用户
提问于 2017-12-05 13:44:27
回答 1查看 674关注 0票数 1

我正在尝试将我的redux状态同步到一个PouchDB实例,但是遇到了问题。

从日志中可以看出,在操作发生后,我的redux状态既没有同步到PouchDB,也没有在更新时将PouchDB文档同步到redux状态。

我试图实现redux-pouchdb,因为它是在jrzerr/react redux-pouchdb中实现的,但是我既没有得到错误,也没有同步工作。

这是我正在使用的代码:

减速器(模块/mainbase.js):

代码语言:javascript
复制
import { persistentReducer } from 'redux-pouchdb';
export const INPUT_CHANGED = 'mainbase/INPUT_CHANGED'

const initialState = {}

function mainbase (state = initialState, action) {
    switch (action.type) {
        case INPUT_CHANGED:
            state[action.key] = action.value;
            return {...state}
        default:
            return state;
    }
}

export default persistentReducer(mainbase);

export const inputChanged = (key, value) => {
  return dispatch => {
    dispatch({
      type: INPUT_CHANGED,
      key: key,
      value: value
    })
  }
}

根还原器(模块/index.js):

代码语言:javascript
复制
import { combineReducers } from 'redux'
import { routerReducer } from 'react-router-redux'
import mainbase from './mainbase'

export default combineReducers({
  router: routerReducer,
  mainbase
})

商店(store.js):

代码语言:javascript
复制
import { createStore, applyMiddleware, compose } from 'redux'
import { routerMiddleware } from 'react-router-redux'
import thunk from 'redux-thunk'
import createHistory from 'history/createBrowserHistory'
import rootReducer from './modules'
import { persistentStore } from 'redux-pouchdb'
import PouchDB from 'pouchdb'

export const history = createHistory()

const db = new PouchDB('testproject')

const initialState = {}

const enhancers = [
  persistentStore(db)
]

const middleware = [
  thunk,
  routerMiddleware(history)
]

const composedEnhancers = compose(
  applyMiddleware(...middleware),
  ...enhancers
)

const store = createStore(
  rootReducer,
  initialState,
  composedEnhancers
)

export default store

我很感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-05 14:25:51

在mainbase中,您正在直接更新状态。这通常不太好用。您应该首先创建当前状态的副本,更新副本并将更新后的副本作为新状态返回。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47655111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档