我有一个带有类型记录的solid-js应用程序运行,我一直收到一个错误,说getElementsByNameTag
不是一个函数。我的目标是能够在组件函数之外更改/获取输入元素的属性。我不知道这是不是最好的方法,有什么建议吗?
代码(App.tsx):
import { Component } from 'solid-js';
const MyComponent = () => {
return (
<div>
<input type="text"/>
<p>Example Text</p>
</div>
);
};
const App: Component = () => {
const component = <MyComponent/> as HTMLDivElement;
const input = component.getElementsByNameTag("input")[0];
...
return (
<div>
{component}
...
</div>
);
};
export default App;
这段代码是我要做的事情的简化版本。
错误信息:
Uncaught (in promise) TypeError: component.getElementsByTagName is not a function
at _Hot$$App (App.tsx:59:20)
at @solid-refresh:10:42
at untrack (dev.js:440:12)
at Object.fn (@solid-refresh:10:28)
at runComputation (dev.js:710:22)
at updateComputation (dev.js:695:3)
at runTop (dev.js:785:7)
at runQueue (dev.js:857:42)
at completeUpdates (dev.js:813:84)
at runUpdates (dev.js:802:5)
发布于 2022-06-18 04:44:34
啊,我打赌我知道这是什么。热模块重新装载。为了使HMR工作,我们需要将组件包装在createMemo
中,以便它们能够在更新时重新运行。在这样的情况下,相等的赋值将在dev而不是prod中给出一个函数。我们没有一个很好的方法做HMR没有包装,所以,您的选择是:
ref
,或者赋值变量并在onMount
或回调中读取变量。/* @refresh skip */
的每个文件进行全局操作。。
https://stackoverflow.com/questions/72665321
复制相似问题