vuex-electron icon indicating copy to clipboard operation
vuex-electron copied to clipboard

Persist partial state

Open PaulBernier opened this issue 5 years ago • 4 comments

The whole global state is persisted in the Store: https://github.com/vue-electron/vuex-electron/blob/master/src/persisted-state.js#L96

It would be nice to be able to only save parts of the state. We can easily imagine that some part of the state are transient (only relevant to the current execution of the application) and shouldn't not be persisted on disk (and not reloaded at startup).

On top of my mind changing setState like this could be sufficient:

setState(state) {
        const stateToPersist = typeof this.options.statePick === 'function' ? this.options.statePick(state) : state
        this.options.storage.set(this.options.storageKey, stateToPersist)
}

And because the loading operation do a deep merge with the initial state it should work seamlessly. Thoughts?

PaulBernier avatar Feb 16 '19 03:02 PaulBernier

This is actually what this package does: https://github.com/robinvdvleuten/vuex-persistedstate with its options saveSate and getState

PaulBernier avatar Feb 20 '19 00:02 PaulBernier

I've got a similar issue - I want some state persisted in memory to enable state to persist during only the app's current session. (Eg switching views, the state should be there still in the same session. But not when closing the app and opening it for another session)

Eg I have a list of players that should only be stored in memory for that session:

{
...otherData,
"players":["Player1","Player2"]
}

But that data, even though it's in the blacklist, it's persisted..

NoelDavies avatar Feb 22 '19 19:02 NoelDavies

I've ended up swapping out this repo for #22

NoelDavies avatar Feb 23 '19 17:02 NoelDavies

https://github.com/vue-electron/vuex-electron/issues/44

akodkod avatar Aug 29 '19 14:08 akodkod