2

我已经在这样的 React App 中实现了pyodide

src/App.js上面链接的示例中,假设somePropertyApp()想从script.py.

const App = () => {
  const [output, setOutput] = useState("(loading...)");
  const [someProperty, setSomeProperty] = useState("Initial state");  // this one
  const runScript = code => {
    window.pyodide.loadPackage([]).then(() => {
  ...

在 pyodide 的正常情况下,我会像在 docs 中那样import js使用从 python 访问 javascript 范围。

可以使用 js 模块从 Python 访问 JavaScript 范围(请参阅使用 Python 中的 Javascript 对象)。这个模块代表全局对象窗口,它允许我们直接操作 DOM 并从 Python 访问全局变量和函数。

但是,属性在里面App(),而不是直接在下面window

我将如何从someProperty内部访问?App()script.py

换句话说,在财产App()下位于哪里?window甚至可以访问App()全局属性吗?

4

1 回答 1

3

您应该能够创建一个可以访问这些局部变量的 JS 对象

let my_module = {
  someProperty : function(){
    return someProperty;
  }
};

然后您可以注册为 Python 模块,

pyodide.registerJsModule("my_js_module", my_module);

所以它可以导入为,

from my_js_module import someProperty

有关详细信息,请参阅文档。这仅适用于 pyodide 的开发版本或即将发布的 0.17.0 版本。

于 2021-02-26T09:35:38.553 回答