vue获取本地时间和服务器时间(顺便复习vuex的内容)

1. vue 实时获取时间

now: new Date()
mounted() {setInterval(()=>{this.now = new Date()}, 1000)
}

2. 获取服务器的时间,防止本机时间获取错误

  • 场景: 本机经常关机,时间获取不同步,但是服务器时间是同步的,需要获取服务器的时间显示
  • 解决办法:
    - 1. 在后端服务器的响应头部可以获取date,
    - 2. 使用简单状态管理store来获取本地时间与服务器的时间差
    - 3. 混入到需要使用的组件中
  • 代码
// store 
var store = {debug: true,state: {differTime: ''},changeTIme (newValue) {if (this.debug) console.log('setMessageAction triggered with', newValue)this.state.differTime = valueOf(new Date()) - valueOf(newValue) // 时间戳的差值}
}// request.js
import store from 'store'
// 添加响应拦截器
instance.interceptors.response.use(function (response) {// 获取服务器时间if(response.header.date) {store.changeTime(response.header.date)}return response},function (error) {// 对响应错误做点什么return Promise.reject(error)}
)// minxin.js 使用公共状态store
import store from '../xx/store'
export default {data() {return {storeState: store.state // {differTime: ''}myState: {currentTime: ''}}},computed: {formatTime() {return this.$moment(this.currentTime).format('YYYY-MM-DD HH:mm:ss')},formatMonth() {return this.$moment(this.currentTime).format('YYYY-MM')},formatYear() {return this.$moment(this.currentTime).format('YYYY')}},mounted() {this.timer = setInterval(() => {this.currentTime = new Date( valueOf(new Date()) + this.storeState.differTime)},1000)}
}// xxx.vue中使用import myMixin from 'xxx'
export default {mixins: ['myMixin'],data() {return {}}}// 则可以使用this.myState.formatTime ......

VUEX 总结

– 上面使用了简单状态管理,具体参考官网说明,只提供了全局变量,和操作变量的方法

  • 相当于使用了Vuex中的state, 和mutations功能, 没有getters, actions, modules(五大功能)

  1. 不能直接改变state里的数据。

  2. mutations:通过执行 this.$store, commit('mutation名称', payload)来触发 mutation 的调用, 间接更新 state

  3. actions 组件中: this.$store.dispatch(‘action 名称’, data1),actions中可以包含异步代码(例如:定时器, 请求后端接口), actions中调用mutations的函数,可以监听操作state的变化

  4. getters可以获取state中经过计算的属性, 类似vue中computed属性,具有缓存功能

  5. namespace 可以使用模块化

         // 分模块,不改方法名...mapActions('模块名', ['actions方法名'])    ||     -------通常放在methods...mapState(模块名', ['state名称'])        ---- 通常放在computed中...mapGetters ('模块名', [ 'getters名称'  ])   ---- 通常放在computed中...mapMutations ('模块名', [ 'mutations名称'  ])   -------通常放在methods或者使用  ...mapActions(['模块名/ 方法名'])   调用函数
    this.$store.dispatch("user/test", "value")  // 第二个参数为传参
    
import {createStore} from 'vuex'
import collapse from "./modules/collapse";
import authState from './modules/auth';export default createStore({modules: {collapse,authState },
})//auth.js
const authState = {namespaced: true, // 开启命名空间state: {count: 0,},mutations: {setCount(state, data) {state.count= data},},actions: {},getters: {count: state => state.count,}
}
export default authState 

—完美!!!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部