ans*_*dev 2 vue.js vuex vuejs2
我有一个关于使用vuex-map-fields.
我有一个 Vuex 商店:
export const state = () => ({
countryCode: null,
phoneNumber: null,
phone: null
})
Run Code Online (Sandbox Code Playgroud)
该表单有两个输入字段:countryCode和phoneNumber。我希望该phone值将根据countryCode和进行更新phoneNumber。
我该如何解决问题vuex-map-fields?
根据vuex-map-fieldsREADME,编辑您的商店设置以使用以下来源的getFieldgetter 和updateFieldmutation vuex-map-fields:
// store.js
import { getField, updateField } from 'vuex-map-fields'
export default new Vuex.Store({
//...
state: {
countryCode: '',
phoneNumber: '',
},
getters: {
getField,
},
mutations: {
updateField,
},
})
Run Code Online (Sandbox Code Playgroud)
...然后您的组件将使用mapFieldsfrom vuex-map-fields:
<template>
<div id="app">
<input v-model="countryCode">
<input v-model="phoneNumber">
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields';
export default {
//...
computed: {
...mapFields([
'countryCode',
'phoneNumber',
]),
},
}
</script>
Run Code Online (Sandbox Code Playgroud)
为了phone从其他两个状态变量计算,您可以使用格式化它的Vuexgetter:
// store.js
const store = new Vuex.Store({
//...
getters: {
phone: state => `${state.countryCode}-${state.phoneNumber}`
},
})
Run Code Online (Sandbox Code Playgroud)
...然后使用Vuex'smapGetterphone在你的组件中显示:
<template>
<div>
<pre>phone: {{ phone }}</pre>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
//...
computed: {
...mapGetters(['phone'])
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
总而言之,您的组件将类似于以下内容:
<template>
<div>
<input v-model="countryCode" type="number">
<pre>countryCode: {{ countryCode }}</pre>
<input v-model="phoneNumber" type="tel">
<pre>phoneNumber: {{ phoneNumber }}</pre>
<pre>phone: {{ phone }}</pre>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
import { mapGetters } from 'vuex'
export default {
computed: {
...mapFields(['countryCode', 'phoneNumber']),
...mapGetters(['phone'])
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3619 次 |
| 最近记录: |