168.Как вы отправляете действия?
Действия просто запускаются с помощью метода store.dispatch, как показано ниже,
store.dispatch('increment')
169.Можете ли вы отправить действие, используя полезную нагрузку или стиль объекта?
Да, действия поддерживают как полезную нагрузку, так и формат стиля объекта, аналогичным мутациям.
// отправка с полезной нагрузкой (payload)
store.dispatch('incrementAsync', {
amount: 10
})
//отправка с объектом
store.dispatch({
type: 'incrementAsync',
amount: 10
})
170.Могу ли я использовать стилизованные компоненты в vuejs?
Стилизованные компоненты в основном используются для приложений ReactJS. Если вы хотите использовать для приложений VueJS, есть библиотека компонентов в стиле vuejs, доступная в библиотеке компонентов в стиле. Компонент VueJS Styled - это библиотека javascript для работы приложений vuejs.
171.Как вы распределяете действия в компонентах?
Вы можете отправлять действия в компонентах с помощью this. $ Store.dispatch ('action name') или использовать помощник mapActions, который сопоставляет методы компонентов с вызовами store.dispatch.
Например, вы можете отправить действия по увеличению в компоненте счетчика, как показано ниже,
import { mapActions } from "vuex";
export default {
// ...
methods: {
...mapActions([
"increment", //сопоставить `this.increment ()` с `this. $ store.dispatch ('приращение')`
// mapActions также поддерживает payloads:
"incrementBy", //сопоставить `this.incrementBy (количество)` с `this. $ store.dispatch ('incrementBy', amount)`
]),
...mapActions({
add: "increment", // сопоставить `this.add ()` с `this. $ store.dispatch ('приращение')`
}),
},
};
172.Как вы составляете действия?
Вы можете написать несколько действий вместе для обработки более сложных асинхронных потоков либо путем объединения обещаний, либо с помощью async / await. то есть store.dispatchможет обрабатывать Promise, возвращаемый обработчиком инициированного действия, а также возвращает Promise.
Давайте предпримем два действия, чтобы увидеть, как они объединяются и обрабатываются асинхронными потоками.
actions: {
actionOne ({ commit }) {
return new Promise((resolve, reject) => {
setTimeout(() => {
commit('first mutation')
resolve()
}, 1000)
})
},
actionTwo ({ dispatch, commit }) {
return dispatch('actionA').then(() => {
commit('second mutation')
})
}
}
Как показано в приведенном выше примере, когда вы пытаетесь отправить actionTwo, он сначала отправляет actionOne, а затем фиксирует соответствующую мутацию. Вы все еще можете упростить с помощью async / await, как показано ниже,
actions: {
async actionOne ({ commit }) {
commit('first mutation', await getDataAsPromise())
},
async actionTwo ({ dispatch, commit }) {
await dispatch('actionOne') // дождитесь завершения `action`
commit('second mutation', await getSomeDataAsPromise())
}
}
Do'stlaringiz bilan baham: |