Vue store отправляет одно свойство вместо всего объекта - PullRequest
0 голосов
/ 12 февраля 2019

Мне было интересно, если это возможно, отправить только одно свойство в хранилище vuex вместо всего объекта.В vuex docs нет возможностей.В настоящее время я храню объект следующим образом:

store.dispatch('currentUser', {
  memberData: 'fooBar'
});

Иногда мне просто нужно извлечь только одно значение из базы данных и отправить его в хранилище.Есть ли способ сделать это?

ОБНОВЛЕНИЕ

Я думаю, что мой вопрос неясен.

На самом деле мне нужно получить доступ к дочернему вложенному свойству memberData в диспетчере, чтобы изменитьтолько один элемент memberData.Если честно, не имеет значения, какой ответ.Это может быть и 'foo'.

1 Ответ

0 голосов
/ 12 февраля 2019

Если вы просматриваете документацию для dispatch , 2-й аргумент payload может быть любого типа.Это не обязательно должна быть диспетчеризация объекта , вложенная в свойство:

Отправка:

store.dispatch('currentUser', response[0]);

Хранение:

state: {
  currentUser: undefined
},
mutations: {
  setCurrentUser(state, currentUser) {
    state.currentUser = currentUser;
  }
},
actions: {
  currentUser(context, payload) {
    context.commit('setCurrentUser', payload);
  }
}

Мутация:

setCurrentUser(state, currentUser) {
  state.currentUser = currentUser;
}

Вот пример в действии.

Обновление:

Если вместо целидля объединения / обновления изменений, вы можете использовать распространение в объектных литералах .Это также упоминается в документации Vuex для Мутации. Следуйте правилам реактивности Vue .

Отправка:

store.dispatch('currentUser', { systemLanguage: response[0].systemLangId });

Хранение:

state: {
  memberData: { systemLanguage: 'foo' }
},
mutations: {
  updateCurrentUser(state, updates) {
    state.memberData = { ...state.memberData, ...updates };
  }
},
actions: {
  currentUser(context, payload) {
   context.commit('updateCurrentUser', payload);
  }
}

Здесь пример этого в действии.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...