Redux store 和 PouchDB 不与 redux-pouchdb 同步
Redux store and PouchDB not syncing with redux-pouchdb
我正在尝试将我的 redux 状态同步到 PouchDB 实例,但是遇到了麻烦。
正如在日志中显示的那样,我的 redux 状态在操作发生后既没有同步到 PouchDB,PouchDB 文档也没有在更新时同步到 redux 状态。
我尝试实施 redux-pouchdb
,因为它在 jrzerr/react-redux-pouchdb 中实施,但我既没有收到错误,也没有同步工作。
这是我正在使用的代码:
减速器(modules/mainbase.js):
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
})
}
}
根减速器(modules/index.js):
import { combineReducers } from 'redux'
import { routerReducer } from 'react-router-redux'
import mainbase from './mainbase'
export default combineReducers({
router: routerReducer,
mainbase
})
商店 (store.js):
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
非常感谢您的帮助。
在 mainbase 中,您正在直接更新状态。这通常效果不佳。您应该首先创建当前状态的副本,更新副本,然后return更新的副本作为新状态。
我正在尝试将我的 redux 状态同步到 PouchDB 实例,但是遇到了麻烦。
正如在日志中显示的那样,我的 redux 状态在操作发生后既没有同步到 PouchDB,PouchDB 文档也没有在更新时同步到 redux 状态。
我尝试实施 redux-pouchdb
,因为它在 jrzerr/react-redux-pouchdb 中实施,但我既没有收到错误,也没有同步工作。
这是我正在使用的代码:
减速器(modules/mainbase.js):
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
})
}
}
根减速器(modules/index.js):
import { combineReducers } from 'redux'
import { routerReducer } from 'react-router-redux'
import mainbase from './mainbase'
export default combineReducers({
router: routerReducer,
mainbase
})
商店 (store.js):
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
非常感谢您的帮助。
在 mainbase 中,您正在直接更新状态。这通常效果不佳。您应该首先创建当前状态的副本,更新副本,然后return更新的副本作为新状态。