Является ли использование (часть) состояния хранилища в качестве полезной нагрузки мутаций правильным шаблоном в vuex? - PullRequest
0 голосов
/ 23 сентября 2018

Чтобы изменить логическое значение в списке задач магазина, обе эти две мутации работают.

export default new Vuex.Store({
	state: {
		todos: [
			{
				id: "x1",
				done: false 
			},
			{
				id: "x2",
				done: true 
			}
		]
	},
	
	mutations: {
		/** 
		 * the item in payload must is the part of the store.state that we want to mutate
		 * we will mutate the payload (not the store state) => we don't use the state parameter
		 * in order to use this mutation we must to assure that item is an object of the store state.
		 */
		setDoneWithObject(state, { item, done }) {
			//mutate the payload = mutate the store.state
			if (item) item.done = done;
		},
		
		/**
		 * give the id
		 */
		setDoneWithId(state, { id, done }) {
			//find the item in the store state
			let item = state.todos.find(o => o.id===id)
			//mutate it
			if (item) item.done = done;
		}
	}
});
  • первый метод быстрее, но его нужно использовать осторожно, мы не можем не бросать в полезный груз только один объект.

  • второй мутат кажется более "не имеющим состояния", поэтому мы можем легко выполнить его модульное тестирование в любом контексте ... он работает все время.

Такесть (и какой из них) правильный / или лучший образец?(мое приложение интенсивно использует первый шаблон).Есть ли у вас другие плюсы / минусы этих 2 моделей?

...