vuex结合vue-cookies的使用

一、创建vuex

import Vue from 'vue'
import Vuex from 'vuex'
import cookie from "vue-cookies"

Vue.use(Vuex)

export default new Vuex.Store({
    state: {
        //从cookie中取
        username: cookie.get("name"),
        token: cookie.get("token"),
        date:cookie.get("date")

    },
    mutations: {
        savetoken: function (state, data) {
            //赋值
            // console.log(data);
            state.username = data.name;
            state.token = data.token;
            //写入cookie
            cookie.set("name", data.name);
            cookie.set("token", data.token);
        },
        cleartoken: function () {
            cookie.set("name", "");
            cookie.set("token", "")
        },

        savedate:function (state,date) {
            console.log(date)
            state.date=date;
            cookie.set("date",date)
        },
        cleardate:function () {
            cookie.set("date","")
        },

    },
    actions: {}
})

二、组件中使用

<script>


    export default {
        name: 'login',
        data: function () {
            return {
                form: {
                    name: '',
                    pwd: '',
                    date1: '',
                    repwd: '',
                }

            }
        },
        methods: {
            login: function () {
                var _this = this.form;
                this.$ajax.request({
                    url: _this.$url + "login/",
                    method: "post",
                    data: {name: _this.name, pwd: _this.pwd}
                }).then(function (res) {
                    console.log(res.data);
                    if (res.data.status == 100) {
                        _this.$store.commit("savetoken", res.data)
                    }
                    else {
                        alert(res.data.msg)
                    }
                })
            },
            savedata: function () {
                var _this = this;

                if (_this.form.date1) {
                    _this.$store.commit("savedate", _this.form.date1)
                }
            }
        },

        mounted() {
            var _this = this;
            if (_this.$store.state.date) {
                _this.form.date1 = _this.$store.state.date
                _this.$store.commit("cleardate")
            }
        }

    }

</script>
<template>
    <div class="course">
        <h1>登入页面</h1>
        <el-form label-width="100px"
                 class="col-lg-4 col-lg-offset-4">
            <el-form-item label="用户名">
                <el-input v-model="form.name"></el-input>
            </el-form-item>
            <el-form-item label="密码">
                <el-input type="password" v-model="form.pwd"></el-input>
            </el-form-item>

            <el-form-item>
                <h4 v-if="!form.pwd&&!form.name" style="color: red;">请输入用户名和密码:</h4>
            </el-form-item>

            <el-date-picker type="date" placeholder="选择日期" v-model="form.date1" style="width: 100%;"
                            @input="savedata"></el-date-picker>
            
            <el-form-item>
                <a href="/course">
                    <el-button type="primary" @click="login">提交</el-button>
                </a>
            </el-form-item>

        </el-form>

    </div>
</template>

猜你喜欢

转载自www.cnblogs.com/angelyan/p/11007776.html