账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Vuex储存Object对象未提交数据就改变的问题
    23
    0

    Vuex储存对象obj: {a: undefined, b: undefined},在Index.vue中有两个input, 数据分别绑定对应obj.a, obj.b, 另obj.a = 1, obj.b = 2;
    预想结果: 点击"打印"按钮,输出{a: undefined, b: undefined}, 点击"保存"后在点击"打印"输出{a: 1, b: 2};
    实际结果: 点击"打印"按钮, 输出{a: 1, b: 2}.
    我考虑到了对象浅拷贝的问题, 所以用getters/mutations对取值作了处理, 是我这个拷贝的方法出了问题吗?
    如果不是, 那么是什么原因导致了这种结果, 应该怎么处理, 才能达到预想的想过呢?
    望解答, 谢谢!

    相关代码

    Index.vue

    <input v-model="obj.a">
    <input v-model="obj.b">
    <button @click="save">保存</button>
    <button @click="print">打印</button>
    <script>
        export default {
            data() {
                return {
                    a: this.$store.getters.getA
                }
            },
            methods: {
                save() {
                    this.$store.commit('setA', this.a);
                },
                
                print() {
                    console.log(this.$store.getters.getObj)
                }
            }
        }
    </script>

    store.js

    export default new Vuex.Store({
        state: {
            obj: {a: undefined, b: undefined}
        },
        getters: {
            getA: state => {
                let obj = {};
                let info = state.a;
                Object.keys(info).map(key => {
                    obj[key] = info[key];
                })
                return obj;
            }
        },
        mutations: {
            setA(state, info) {
                let obj = {};
                Object.keys(info).map(key => {
                    obj[key] = info[key];
                })
                state.a = obj;
            }
        },
    })
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 爪良 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部