Генератор идентификаторов Vuex - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь создать уникальные идентификаторы для своих компонентов.

Я подумал, раз уж он глобальный, было бы хорошо поместить его в Vuex с полем типа lastGeneratedID: 0 в состоянии и мутацией, увеличивающей это значение.

Теперь, когда компоненту нужен новый идентификатор, он должен сначала прочитать значение, а затем увеличить его, ВСЕГДА в этом заказе, ВСЕГДА выполнять обе операции, иначе все станет беспорядочно.

Есть ли способ каким-то образом объединить эти две функции в одной функции (желательно не только в экземпляре $root), или мне просто не следует делать такие вещи?

Или просто назвать поле lastGeneratedIDAlwaysHasToBeIncrementedAfterReadingDontYouDareNotIncrementing? : D

1 Ответ

1 голос
/ 07 мая 2020

Почему бы вам сначала просто не вызвать мутацию, чтобы увеличить идентификатор, а затем прочитать ее. JS является однопоточным, поэтому у вас не может быть гоночных условий.

this.$store.commit('INCREMENT_ID')

const myId = this.$store.state.id

Вы можете упаковать обе строки в другую функцию и вызывать только ее.

export default getNewID = () => {
 store.commit('INCREMENT_ID')

 return store.state.id
}

I ' m при условии, что вы экспортируете это из пакета, а также import store.

Альтернативой может быть создание уникального идентификатора, поэтому вам не нужно отслеживать сгенерированные идентификаторы. Вы можете использовать пакет uuid, например this

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