web/mhtml
mhtml 에서 imitate 로 Var 값에 Rx 복사하기
wefree
2021. 10. 25. 22:07
문제
mhtml 에서 아래와 같이 x, y 가 있을 때 x 값에 y 를 복사해 보자
val x: Var[Int] = Var(1)
val y: Var[Int] = Var(2)
코드
mhtml 의 imitate 를 사용해 복사할 수 있다.
import mhtml._
import org.scalajs.dom
object MHtmlTest {
def view(): Unit = {
val x: Var[Int] = Var(1)
val y: Var[Int] = Var(2)
val z: Rx[Int] = x.imitate(y)
val content = <div>{x} {z}</div>
mount(dom.document.getElementById("main_content"), content)
}
}
화면에 x, z 값이 노출되어 2 2 를 확인할 수 있다.
그런데 z 값을 빼고 아래와 같이 작성한다면 imitate 가 적용되지 않는다.
val content = <div>{x}</div>
그래서 화면에는 1 이 노출된다.
설명
impure run 사용하기를 응용하면 아래처럼 작성하는 것도 가능하지 않을까?
import mhtml._
import org.scalajs.dom
object MHtmlTest {
def view(): Unit = {
val x: Var[Int] = Var(1)
val y: Var[Int] = Var(2)
y.impure.run(value => x := value)
val content = <div>{x}</div>
mount(dom.document.getElementById("main_content"), content)
}
}