首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以通过自定义元素使用Preact组件吗?

我可以通过自定义元素使用Preact组件吗?
EN

Stack Overflow用户
提问于 2017-02-19 14:08:20
回答 5查看 1.6K关注 0票数 3

我想创建一个Preact组件,让人们使用它,即使他们没有构建Preact应用程序。

示例:我希望在Preact中构建一个<MyTooltip>组件,将它捆绑在一起(以及Preact运行时),并让人们将它作为脚本标记加载,使用它纯粹是声明性的,可能如下所示:

代码语言:javascript
复制
<script src="https://unpkg.com/my-tooltip/my-tooltip-bundled.js">

<my-tooltip content="Tooltip content">Hover here</my-tooltip>

是否有一种方法可以将组件打包成包含Preact运行时、我的库代码和钩子到<my-tooltip>元素中的组件?

换句话说,我是否可以将Preact组件互操作为自定义元素,类似于ReactiveElements

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-03-07 13:24:04

有一个很好的库为您创建了preact-定制元素:

https://github.com/bspaulding/preact-custom-element

代码语言:javascript
复制
class SearchBox extends Component {
  render() {
    // ...
  }
}
registerComponent(SearchBox, 'search-box');
票数 7
EN

Stack Overflow用户

发布于 2019-03-14 14:23:10

尽管Jason的回答帮了我很大的忙,但我还是很难给出一个基本的工作示例,所以我从一开始就解决了这个问题:

我的基本html文档,包括包含虚拟the组件的实际代码的捆绑脚本dummy.js

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div>
    <script async src="./dummy.js" type="text/javascript"></script>

    <dummy-view name="Test"></dummy-view>
</div>
</body>
</html>

我的虚拟网页组件:

代码语言:javascript
复制
import {div} from '../utils/hyperscript';
import registerCustomElement from 'preact-custom-element';

const DummyView = ({ name = "World" }) => (
    div({}, `Hello, ${name}!`)
);
registerCustomElement(DummyView, "dummy-view", ["name"]);

我的webpack配置:

代码语言:javascript
复制
const path = require('path');

module.exports = {
    entry: {
        dummy: './lib/dummy/dummy-view.js'
    },
    module: {
        rules: [
            {
                test: /\.css$/,
                use: ['style-loader', 'css-loader']
            }
        ]
    },
    output: {
        path: path.resolve(__dirname, 'webcomponent/')
    }
};

更多细节:

  • 我安装了preact-custom-element,就像npm i preact-custom-element一样。
  • 捆绑是用webpack做的,就像这样:npx webpack
  • index.html将在/webcomponent (例如http://localhost:3000/webcomponent/)下服务。
  • 在浏览器中访问上面的URL时,结果如下所示:
代码语言:javascript
复制
<div>Hello, Test!</div>

增编:

票数 3
EN

Stack Overflow用户

发布于 2020-07-13 21:35:14

PreactJS自己也有一个库可以这样做

https://github.com/preactjs/preact-custom-element

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42328198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档