javascript - 如何在没有命名空间的情况下从 JavaScript 调用 Rust 函数?

标签 javascript rust

我正在使用 stdweb library从 JavaScript 调用 Rust 函数:

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

它可以工作,但我必须添加命名空间 Module.exports. 才能调用它:

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

如何隐藏此命名空间或使其变小?

最佳答案

我无法通过 JavaScript 按名称调用 Rust 函数,除非我先导出它 (#[js_export])。但是,来自 stdweb libraryjs! 宏允许 JavaScript 代码调用常规 Rust 函数:

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

调用它:

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

或者,如果您确实需要为函数命名:

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

关于javascript - 如何在没有命名空间的情况下从 JavaScript 调用 Rust 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51083241/

相关文章:

javascript - 添加元素动态后的JQuery绑定(bind)事件

javascript - ES6 Symbol 能保证 100% 唯一标识符吗?

rust - 使用HashMap解决借用问题(代码2020到来的破坏者)

io - 使用 Read::read_to_string 从 TcpStream 读取会挂起,直到连接被远程端关闭

javascript - 在 Ember 中,我可以将标记传递给组件吗?

java - 一个 jsp 中的两个操作 URL

concurrency - 如果做错了,为什么用餐哲学家不会陷入僵局?

rust - 如何在结构字段中表示不透明类型

arrays - 更有效地初始化数组持有结构

javascript - 多次传递单选按钮的值