Можно ли получить какой компонент вызвать какое-либо действие Vuex?

Можно ли получить какой компонент вызвать какое-либо действие Vuex?

Я возвращаю обещание от действий vuex и принимаю некоторые решения в компоненте как набор сообщений об ошибках в соответствующих полях, но я хотел бы установить для компонента.$ Validator.errors как можно скорее Я получаю ответ http (в методе действия)

Это возможно и хороший подход?

1 ответ

Решение

В Vuex, когда вы делаете вызов мутации или действию, вы можете отправить объект вместе с вашим диспетчерским вызовом. Если вы хотите отследить компонент, вызвавший действие, вы также можете отправить его как часть объекта. Еще лучше, если бы все объекты, отправленные через Vuex, расширяли определенный класс, если вы используете машинопись. Обратите внимание, что нахождение того компонента, который называется действием или мутацией, не является нативным поведением для Vuex.

Учтите следующее:

try{
    let out = await this.$store.dispatch('someActionHandler', {referingComponent: this.$options.name, someParam:[1,2,3]})
} catch (e){
   // Lets deal with the problem
}

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

Что касается, если это хороший подход, ответ на который довольно субъективен, лично я не вижу никаких проблем с вышеупомянутым подходом. Хотя я бы подумал, что это анти-паттерн, если большинство компонентов никогда не проверяются или добавленные данные в конечном итоге становятся бессмысленным пухом, передаваемым вместе с каждым вызовом.

Другие вопросы по тегам