@@ -145,21 +145,7 @@ class Store {
145145 }
146146
147147 hotUpdate ( newOptions ) {
148- const options = this . _options
149- if ( newOptions . actions ) {
150- options . actions = newOptions . actions
151- }
152- if ( newOptions . mutations ) {
153- options . mutations = newOptions . mutations
154- }
155- if ( newOptions . getters ) {
156- options . getters = newOptions . getters
157- }
158- if ( newOptions . modules ) {
159- for ( const key in newOptions . modules ) {
160- options . modules [ key ] = newOptions . modules [ key ]
161- }
162- }
148+ updateModule ( this . _options , newOptions )
163149 resetStore ( this )
164150 }
165151
@@ -175,6 +161,30 @@ function assert (condition, msg) {
175161 if ( ! condition ) throw new Error ( `[vuex] ${ msg } ` )
176162}
177163
164+ function updateModule ( targetModule , newModule ) {
165+ if ( newModule . actions ) {
166+ targetModule . actions = newModule . actions
167+ }
168+ if ( newModule . mutations ) {
169+ targetModule . mutations = newModule . mutations
170+ }
171+ if ( newModule . getters ) {
172+ targetModule . getters = newModule . getters
173+ }
174+ if ( newModule . modules ) {
175+ for ( const key in newModule . modules ) {
176+ if ( ! ( targetModule . modules && targetModule . modules [ key ] ) ) {
177+ console . warn (
178+ `[vuex] trying to add a new module '${ key } ' on hot reloading, ` +
179+ 'manual reload is needed'
180+ )
181+ return
182+ }
183+ updateModule ( targetModule . modules [ key ] , newModule . modules [ key ] )
184+ }
185+ }
186+ }
187+
178188function resetStore ( store ) {
179189 store . _actions = Object . create ( null )
180190 store . _mutations = Object . create ( null )
0 commit comments