Ich versuche, meinen Redux-Zustand mit einer PouchDB-Instanz synchronisiert zu bekommen, aber ich habe Probleme damit.Redux-Speicher und PouchDB synchronisieren nicht mit redux-pouchdb
Wie es in den Protokollen scheint, ist weder mein Redux-Status mit PouchDB synchronisiert, nachdem eine Aktion stattgefunden hat, noch ist das PouchDB-Dokument mit dem Redux-Status beim Update synchronisiert.
Ich habe versucht, redux-pouchdb
zu implementieren, wie es in jrzerr/react-redux-pouchdb implementiert ist, aber weder bekomme ich einen Fehler, noch funktioniert die Synchronisierung.
Dies ist der Code mit denen ich arbeite:
Reducer (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
})
}
}
Root-Reduzierer (modules/index.js):
import { combineReducers } from 'redux'
import { routerReducer } from 'react-router-redux'
import mainbase from './mainbase'
export default combineReducers({
router: routerReducer,
mainbase
})
Speichern (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
Ich bin dankbar für jede Hilfe.
Ich verwende einen Spread-Operator, so dass der Status, den der Reducer zurückgibt, ein neu kopiertes Objekt ist. Der Status wird korrekt aktualisiert, nur die Synchronisierung zum Pochieren funktioniert nicht wie beabsichtigt. – dboth
state [action.key] = action.value; return {... state} – Amitabh
state [aktion.key] = action.value; return {... state} Ich denke, das sollte so sein: newState = {... state, [action.key]: action.value}; return newState – Amitabh