鍍金池/ 問答/HTML/ vuex要寫一個能調(diào)用的公共方法應(yīng)該寫在哪里?

vuex要寫一個能調(diào)用的公共方法應(yīng)該寫在哪里?

前提:
1、方法內(nèi)部需要使用到state的狀態(tài)數(shù)據(jù)
2、該方法要多次調(diào)用或者循環(huán)調(diào)用
3、這個方法肯定不能寫在action里面,它不修改state里的狀態(tài),只是利用state數(shù)據(jù)和參數(shù),做一些比較計算,并返回新結(jié)果

我現(xiàn)在的做法是,在外部定義這個公共函數(shù),然后每次都把state作為參數(shù)傳進(jìn)去

export function 函數(shù)名(state, 其他參數(shù)){
    //實(shí)現(xiàn)
}

這樣雖然能實(shí)現(xiàn)我的意圖,但是我總感覺不妥當(dāng)呢?請問有沒有更好的做法。

回答
編輯回答
孤客

clipboard.png

2018年4月28日 08:54
編輯回答
凹凸曼

Mutations呀大兄弟~
vuex文檔

2018年7月26日 03:10
編輯回答
放開她

你可以在main.js中注冊一個全局方法

Vue.prototype.someMethod = function(state){
    // do something...
}

然后在組件內(nèi)調(diào)用

this.someMethod(state)

一般來說這種方式注冊的都是使用頻次很高的方法, 如處理后臺返回的結(jié)果的函數(shù)、自己寫的formatTime方法

2018年6月14日 08:03
編輯回答
脾氣硬

公共函數(shù)文件可以直接

import store from '@/store'

export function func1() {
  const state1 = store.state.module_name.state1
  return state1
}
2017年3月3日 11:03
編輯回答
我不懂

感覺你這個需求寫在Getter里面比較合適,看下文檔 Getter通過方法訪問

2017年6月27日 18:53