1.0.2 • Published 5 years ago

vuexfrom v1.0.2

Weekly downloads
4
License
MIT
Repository
github
Last release
5 years ago

vuex-from

描述

我们在表单中使用 vuex 时总会感觉到各种的不方便

  • 每个属性都要指定一个 mutation 来更新
  • 需要拆开 v-model:value@input
  • 界面中要单独声明一个更新的方法

这是让很多人放弃在表单中使用 vuex的原因,太笨太繁琐了

vuex 默认的表单方案

<template>
    <input :value="message" @input="updateMessage">
</template>

<script>
import {mapStates} from 'vuex'

export default {
    computed: {
    ...mapState({
        message: state => state.obj.message
    })
    },
    methods: {
        updateMessage (e) {
            this.$store.commit('updateMessage', e.target.value)
        }
    }
}
</script>

vuex from 解决方案:

安装

npm install --save vuexfrom

代码设置

main.js

import vuexform from 'vuexfrom'
import store from '@/store'

vuexform.install(store)

vuex store module 'customer.js'

import {updateState} from 'vuexfrom'

export default {
    namespaced:true,
    state:{
        current:{
            name:'bowen',
            age:18
        }
    },
    mutations:{
        updateState
    }
}

一般映射

<template>
    <div>
        <input v-model="name">
        <input v-model="age">
    </div>
</template>

<script>
import {mapFormStates} from 'vuexfrom'
export default {
    computed:{
        ...mapFormStates('customer', ['current'])        
    }
}
</script>

添加映射前缀

<template>
    <div>
        <input v-model="cu_name">
        <input v-model="cu_age">
    </div>
</template>

<script>
import {mapFormStates} from 'vuexfrom'
export default {
    computed:{
        ...mapFormStates('customer', ['cu:current'])
    }
}
</script>

属性逐个映射

<template>
    <div>
        <input v-model="cname">
        <input v-model="cage">
    </div>
</template>

<script>
import {mapFormStates} from 'vuexfrom'
export default {
    computed:{
        ...mapFormStates('customer', [{cname:'current.name', cage:'current.age'}])
    }
}
</script>
1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago