Ich versuche, einen Klick-Handler für eine Reaktionskomponente mit sri & scala-react/scala-js zu erstellen. Im folgenden Code kann der onClick
Handler nicht aufgelöst werden. Ich vermute, dass es eine Art Annotation oder etwas benötigt, aber ich habe es von einem Beispiel kopiert (Suche nach tick
auf diesem page).Wie erstellt man einen Klick-Callback mit sri/scala-react?
Hier ist mein Code:
package demo.web.screens
import org.scalajs.dom
import demo.web.styles.GlobalStyle
import shared.contactform.ContactForm
import sri.core._
import sri.scalacss.Defaults._
import sri.web.all._
import sri.web.vdom.htmltags._
import scala.scalajs.js
import scala.scalajs.js.annotation.ScalaJSDefined
object ContactScreen {
@ScalaJSDefined
class Component extends ReactComponent[Unit, Unit] {
var bodyRef: dom.html.Input
var nameRef: dom.html.Input
var emailRef: dom.html.Input
def handleClick(e: ReactMouseEventI) = {
Option(bodyRef).foreach { body =>
val form = ContactForm(body = body.value,
name = Option(nameRef).map(_.value),
email = Option(emailRef).map(_.value))
println(s"Inside click handler with form: $form")
}
}
def render() = {
dom.console.log("In contact screen")
val contactForm = ContactForm(body = "static body", name = None, email = None)
println(s"contact form = $contactForm")
form()(
div(className = GlobalStyle.flexOneAndCenter)(
span(className = GlobalStyle.bigText)("Contact us"),
label()("Your name",
input(id = "name", ref = (e: dom.html.Input) => nameRef = e)),
label()("Your email address",
input(`type`="email", id = "email",
ref = (e: dom.html.Input) => emailRef = e)),
label()("Comments",
textarea(id = "body", ref = (e: dom.html.Input) => bodyRef = e)()),
button(id = "submit", onClick = handleClick _)("Submit")
)
)
}
}
val constructor = getTypedConstructor(js.constructorOf[Component], classOf[Component])
def apply(key: js.UndefOr[String] = js.undefined,
ref: js.Function1[Component, _] = null) = {
createElementNoProps(constructor, key = key, ref = ref)
}
}
Bitte poste ein fokussierteres Code-Snippet. Sie haben ungefähr 60 Zeilen gepostet, die ich durchlaufen muss, wenn der Fehler leicht in 2 Zeilen reproduziert werden kann. – nafg
Bitte fügen Sie die genaue Fehlermeldung hinzu. "Kann nicht gelöst werden" ist nicht sehr klar. – nafg
"sri & scala-react/scala-js" - hier gibt es keine separate Sache namens "scala-react". Es gibt eine Bibliothek namens scala-js-react, die eine Alternative zu Sri ist, die Sie nicht verwenden – nafg