Ractive не предписывает соглашение для обмена данными / межкомпонентной связи.Тем не менее, это дает вам возможность сделать это.Обычная практика, которую я видел, - это создание «фиктивного экземпляра» и использование его методов ractive.fire()
и ractive.on()
.
// The dummy instance, make it visible to components.
const pubsub = Ractive()
const SourceComponent = Ractive.extend({
template: '<button click="send()">Click me</button>',
send(){
pubsub.fire('message')
}
})
const ListeningComponent = Ractive.extend({
onInit(){
pubsub.on('message', () => {
console.log('called')
})
}
})
В качестве альтернативы, если все, что вам нужно, это совместно использовать состояние для всех компонентов,измените их в любом месте, и когда каждый из них будет перерисован при изменении, вы можете перевести это состояние в @shared
.