如果不使用store.js,那么使用localStorage的时候,被存储的每个值上都调用了一次toString方法。这就是说,你不能方便的对numbers、objects或者arrays进行存取。
JSON是JavaScript的原生序列化引擎。但是在使用store.js的时候,你不需要自己去对值进行序列化或反序列化,在每次调用store.set()和store.get()的时候,store.js已经分别通过JSON.stringify()和JSON.parse()实现了相同的效果。
状态管理有5个核心,分别是state、mutation、getter、action、module
(1)state
简单的理解,可以把state想象成组件中的data,专门用来存储数据的。
如果在组件中,想要访问store中的数据,只能通过```this.$store.state.xxx来访问
(2)mutation
负责修改state中的数据
如果要操作store中的state值,不推荐直接操作state中的数据,推荐通过调用mutations提供的方法来操作对应的数据。mutation的作用如下图:
(4)action
action和mutation有些类似,不同在于
(5)mudule
module解决了当state复杂臃肿的时候,module可以将store分割成模块,每个模块拥有直接的state、mutation、action和getter。
store.set('username', 'marcus')store.get('username')
store.remove('username')
store.clear()
store.set('user', { name: 'marcus', likes: 'javascript' })
var user = store.get('user')
alert(user.name + ' likes ' + user.likes)
// Get all stored values
store.getAll().user.name == 'marcus'
// Loop over all stored values
store.forEach(function(key, val) {
console.log(key, '==', val)