Dynamic Behavior
I'm proud to introduce a very interesting api--become.
Become
Become can replace the store's behavior. It's very similar to the redux's replaceReducer.
test("change the behavior of self while self is living", t => {
t.plan(2)
class ChangeBehavior { }
class NewBehavior { }
const system = new ActorSystem("testSystem")
class BahaviorActor extends AbstractActor {
public createReceive() {
return this.receiveBuilder()
.match(ChangeBehavior, () => {
t.pass()
const newBehavior = this.receiveBuilder().match(NewBehavior, () => t.pass()).build()
this.context.become(newBehavior)
})
.build()
}
}
const behaviorActor = system.actorOf(new BahaviorActor)
behaviorActor.tell(new ChangeBehavior)
behaviorActor.tell(new ChangeBehavior)
behaviorActor.tell(new NewBehavior)
behaviorActor.tell(new ChangeBehavior)
system.terminal()
})