MDUI 按钮无法在 Stencil Web 组件中正确渲染

问题描述 投票:0回答:1

我正在开发一个项目,尝试将 MDUI 组件(如按钮)集成到我的 Stencil Web 组件项目中。我已按照 MDUI 文档并将 MDUI CSS 和组件引入到我的项目中,但 MDUI 按钮未正确呈现。

这是我到目前为止所做的:

  • 模板组件(my-component.tsx):
import { Component, Host, Prop, h } from '@stencil/core';
// Always import the CSS file
import 'mdui/mdui.css';
import 'mdui/components/button';

@Component({
  tag: 'my-component',
  styleUrl: 'my-component.css',
  shadow: true,
})
export class MyComponent {

  @Prop()
  variant: 'elevated' | 'filled' | 'tonal' | 'outlined' | 'text' = 'filled';

  @Prop()
  disabled = false;

  componentDidLoad() {
    (window as any).mdui?.init();
  }

  render() {
    return (
      <Host>
        <mdui-button variant={this.variant} disabled={this.disabled}>
          <slot></slot>
        </mdui-button>

        <button
          class={`mdui-btn mdui-btn-${this.variant}`}
          disabled={this.disabled}
        >
        TEst
        </button>

        <div>Helloosssso, World!</div>
      </Host>
    );
  }
}
  • CSS 文件(my-component.css):
:host {
  display: inline-block;
}
  • HTML 文件(index.html):
<!DOCTYPE html>
<html dir="ltr" lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=5.0" />
    <title>Stencil Component Starter</title>

    <!-- MDUI CSS and JS -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/mdui/1.0.1/css/mdui.min.css" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mdui/1.0.1/js/mdui.min.js"></script>

    <script type="module" src="/build/webcomponentsnext.esm.js"></script>
    <script nomodule src="/build/webcomponentsnext.js"></script>
  </head>
  <body>
    <my-component variant="filled" disabled="false"></my-component>
  </body>
</html>

问题: 当我加载页面时,该按钮似乎没有以正确的 MDUI 样式或功能呈现。该按钮显示为普通 HTML 按钮,没有任何 MDUI 样式。

我尝试过的: 禁用影子 DOM 以确保应用全局样式 (MDUI CSS)。 使用 componentDidLoad() 生命周期挂钩内的 mdui.init() 手动初始化 MDUI。 确认 MDUI CSS 和 JS 已正确加载到 HTML 文件中。 检查 MDUI 类名称(mdui-btn、mdui-btn-filled 等)是否在 Stencil 组件中正确应用。

material-ui storybook stenciljs
1个回答
0
投票

您需要从库中导入 css 文件(导入 'mdui/mdui.css'; )到'my-component.css'中。 考虑到你的路径,它应该是这样的: @import(../../node_modules/mdui/mdui.css);

© www.soinside.com 2019 - 2024. All rights reserved.