Как вызвать функцию Rust из JavaScript без пространства имен? - PullRequest
0 голосов
/ 28 июня 2018

Я использую библиотеку stdweb для вызова функции Rust из JavaScript:

#[js_export]
fn handleClick(e: Value) {
    js!{ alert("Hello!"); }
}

Это работает, но я должен добавить пространство имен Module.exports., чтобы вызвать его:

React.createElement("p",{onClick: e => Module.exports.handleClick(e) }, ... }

Как мне скрыть это пространство имен или сделать его меньше?

1 Ответ

0 голосов
/ 03 июля 2018

Я не мог вызвать функцию Rust по имени из JavaScript, если не экспортировал ее сначала (#[js_export]). Однако макрос js! из библиотеки stdweb позволяет коду JavaScript вызывать обычную функцию Rust:

fn handleClick(e: Value) {
    js!{ alert("Hello!"); }
}

Чтобы назвать это:

js!{
    React.createElement("p",{onClick: @{handleClick} }, ...);
}

или, если вам действительно нужно назвать функцию:

js!{
    const fct = @{handleClick};
    React.createElement("p",{onClick: fct}, ...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...