Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js VUEX API层处于突变还是getter?_Vue.js_Vuex - Fatal编程技术网

Vue.js VUEX API层处于突变还是getter?

Vue.js VUEX API层处于突变还是getter?,vue.js,vuex,Vue.js,Vuex,假设我收到API的回复: { name: 'Mat', last_name: 'Kowalsky', } Person的界面如下所示: { name: string; lastName: string; children: Person[] } 将一个模型转换为另一个模型的最佳位置在哪里?我应该这样做吗 const setPerson: (state: State, person: any) => { state.person = {

假设我收到API的回复:

{
   name: 'Mat',
   last_name: 'Kowalsky',
}
Person的界面如下所示:

{
    name: string;
    lastName: string;
    children: Person[]
}
将一个模型转换为另一个模型的最佳位置在哪里?我应该这样做吗

 const setPerson: (state: State, person: any) => {
     state.person = {
        name: person.name,
        lastName: person.last_name,
        children: (person.children) ? person.children : []
     } 
  }
   const getters = {
      person: (state: State) => {
         return {
             name: state.person.name,
             lastName: state.person.last_name,
             children: (state.person.children) ? state.person.children : []
         }
      }

   }
或者在getter这样的例子中:

 const setPerson: (state: State, person: any) => {
     state.person = {
        name: person.name,
        lastName: person.last_name,
        children: (person.children) ? person.children : []
     } 
  }
   const getters = {
      person: (state: State) => {
         return {
             name: state.person.name,
             lastName: state.person.last_name,
             children: (state.person.children) ? state.person.children : []
         }
      }

   }

关于

当插入新的人时,突变被调用一次。 吸气剂很可能经常被叫来


这就是为什么我会将转换放在变异中。

如果我必须选择,那就是变异,但我认为最好的方法,因为您的存储依赖于您的api

您可以将API的响应映射到您的Person,就像您的变体已经有Person对象一样

承诺:

myPromise.then(res => ({ res.name, lastName: res.last_name }))
使用Rxjs:

myObservable.pipe(
   map(res => ({ res.name, lastName: res.last_name }))
)

当你使用反应时,你应该使用变异。因为它不依赖于任何商店属性

getter是依赖于另一个存储属性的,当存储属性更改时,getter会自动更改。因此,如果您的属性与商店的其他属性有依赖关系,那么最好使用getters