From 028765141d389d93c6aace6a7682be2b6f75098a Mon Sep 17 00:00:00 2001 From: Changyu Geng Date: Thu, 26 May 2016 11:18:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E8=A1=A8=E5=8D=95=E7=BB=91=E5=AE=9A?= =?UTF-8?q?=E4=B8=AD=E4=BD=BF=E7=94=A8=20vuex=20=E7=9A=84=E5=8F=A6?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E5=8F=AF=E8=A1=8C=E6=96=B9=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在组件中使用计算属性可以使得状态继续保持可跟踪,同时又可方便地使用 v-model 的其他特性。 --- docs/zh-cn/forms.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/docs/zh-cn/forms.md b/docs/zh-cn/forms.md index b0050e7ff..955fb20b3 100644 --- a/docs/zh-cn/forms.md +++ b/docs/zh-cn/forms.md @@ -34,3 +34,34 @@ mutations: { ``` 必须承认,这样做比简单地使用 `v-model` 要啰嗦得多,但这换来的是 state 的改变更加清晰和可被跟踪。另一方面,Vuex **并不**强制要求所有的状态都必须放在 Vuex store 中 —— 如果有些状态你觉得并没有需要对其变化进行追踪,那么你完全可以把它放在 Vuex 外面(比如作为组件的本地状态),这样就可以愉快地使用 `v-model` 了。 + +此外,如果仍然希望使用 Vuex 管理跟踪状态,并愉快地使用 `v-model`,还可以在组件中使用带 setter 的计算属性,这样,你就可以使用诸如 lazy、number 和 debounce 这样的参数特性了。 + +``` html + +``` +``` js +// ... +vuex: { + getters: { + message: state => state.obj.message + }, + actions: { + updateMessage: ({ dispatch }, value) => { + dispatch('UPDATE_MESSAGE', value) + } + }, + computed: { + thisMessage: { + get () { + return this.message + }, + set (val) { + this.updateMessage(val) + } + } + } +} +``` + +mutation 保持不变。