gpt4 book ai didi

javascript - 如何在没有构建工具的情况下将 useState hook 与 Preact 一起使用?

转载 作者:行者123 更新时间:2023-12-05 02:37:49 25 4
gpt4 key购买 nike

目前,我需要让 Preact 应用程序在没有任何构建工具的情况下运行,只需使用带有导入语句的 index.html 即可从 CDN 获取 Preact。我能够从 CDN 导入 useState Hook 没问题,甚至能够 console.log() 函数 useState 的值,但每当我尝试使用它,我收到一条错误消息:

'Uncaught TypeError: u is undefined'

你会碰巧知道为什么会这样吗?我曾尝试在功能组件内部和外部使用 useState 函数,但无论哪种方式都不起作用。我在这里错过了什么吗?谁能帮我指出正确的方向?

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script type="module">
import { h, Component, render } from 'https://unpkg.com/preact?module';
import { useState } from 'https://unpkg.com/preact@latest/hooks/dist/hooks.module.js?module'
import htm from 'https://unpkg.com/htm?module';

// Initialize htm with Preact
const html = htm.bind(h);

const App = (props) => {

const [testVar, setTestVar] = useState(0);

var countVariable = 0;

const incrementButtonHandler = () => {
countVariable = countVariable + 1;
}

const logMethod = () => {
console.log(countVariable);
countVariable = countVariable + 1;
}

return html`<div>
<h1>Test ${props.name}!: ${countVariable}</h1>
<button onClick=${logMethod}>Increment</button>
</div>`;
}

render(html`<${App} name="World" />`, document.body);
</script>
</head>
<body>

</body>
</html>

最佳答案

这是 unpkg 可以做什么的已知错误和限制,请参阅:https://github.com/preactjs/preact/issues/2571

不过有几个简单的修复方法:

  1. 为每个模块使用已解析的 URL(注意预导入中的 @latest)
import { h, render } from 'https://unpkg.com/preact@latest?module'
import { useState } from 'https://unpkg.com/preact@latest/hooks/dist/hooks.module.js?module'
import { html } from 'https://unpkg.com/htm/preact/index.module.js?module'
  1. 使用 CDN 没有这个问题,比如 skypack ,而是:
import { h, render } from 'https://cdn.skypack.dev/preact';
import { useState } from 'https://cdn.skypack.dev/preact/hooks';
import { html } from 'https://cdn.skypack.dev/htm/preact';

两者都可以。

关于javascript - 如何在没有构建工具的情况下将 useState hook 与 Preact 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69891883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com