Class 使用 mwc-tab-bar 切换时,放置在 Web 组件上的内容不会持续存在
Class placed on web component does not persist when toggled with mwc-tab-bar
使用点亮元素2,
我注意到当我使用 mwc-tab-bar 切换选项卡时,<transactions-element class="hide"></transactions-element>
上的 class="hide"
仍然存在。
这是为什么?
render() {
return html`
<mwc-tab-bar @MDCTabBar:activated="${this._setCurrentTabView}">
<mwc-tab
data-el="transactions-element"
label="transactions"></mwc-tab>
<mwc-tab
data-el="foo-element"
label="foo"></mwc-tab>
</mwc-tab-bar>
<div class="main">
<main>${this._renderCurrentView()}</main>
</div>
`
}
_setCurrentTabView(e) {
const {index} = e.detail;
const tabs = this.renderRoot.querySelectorAll('mwc-tab');
const { el } = tabs[index].dataset;
this._fadeOutPage(this.currentView);
}
_renderCurrentView() {
switch (this.currentView) {
case 'transactions-element':
import('./transactions-element.js');
return html`<transactions-element></transactions-element>`;
case 'foo-element':
import('./foo-element.js');
return html`<foo-element></foo-element>`;
default:
import('./not-found-view.js');
return html`<not-found-view></not-found-view>`;
}
}
_fadeOutPage(el) {
const fromEl = this.renderRoot.querySelector(el);
fromEl.classList.add('hide');
}
}
任何时候调用 _renderCurrentView 都会销毁更改。
最好更新有状态的 属性 和 re-render
添加反应式 属性(例如 hideTransactionelement)
设置于:
_fadeOutpage(el){
this.hideTransactionelement = true;
}
将类映射导入模块
https://lit.dev/docs/templates/directives/#classmap
并更新渲染
const classes = { hide: this.hideTransactionelement };
return html`<transactions-element class=${classMap(classes)} ></transactions-element>`;
使用点亮元素2,
我注意到当我使用 mwc-tab-bar 切换选项卡时,<transactions-element class="hide"></transactions-element>
上的 class="hide"
仍然存在。
这是为什么?
render() {
return html`
<mwc-tab-bar @MDCTabBar:activated="${this._setCurrentTabView}">
<mwc-tab
data-el="transactions-element"
label="transactions"></mwc-tab>
<mwc-tab
data-el="foo-element"
label="foo"></mwc-tab>
</mwc-tab-bar>
<div class="main">
<main>${this._renderCurrentView()}</main>
</div>
`
}
_setCurrentTabView(e) {
const {index} = e.detail;
const tabs = this.renderRoot.querySelectorAll('mwc-tab');
const { el } = tabs[index].dataset;
this._fadeOutPage(this.currentView);
}
_renderCurrentView() {
switch (this.currentView) {
case 'transactions-element':
import('./transactions-element.js');
return html`<transactions-element></transactions-element>`;
case 'foo-element':
import('./foo-element.js');
return html`<foo-element></foo-element>`;
default:
import('./not-found-view.js');
return html`<not-found-view></not-found-view>`;
}
}
_fadeOutPage(el) {
const fromEl = this.renderRoot.querySelector(el);
fromEl.classList.add('hide');
}
}
任何时候调用 _renderCurrentView 都会销毁更改。 最好更新有状态的 属性 和 re-render
添加反应式 属性(例如 hideTransactionelement)
设置于:
_fadeOutpage(el){
this.hideTransactionelement = true;
}
将类映射导入模块 https://lit.dev/docs/templates/directives/#classmap
并更新渲染
const classes = { hide: this.hideTransactionelement };
return html`<transactions-element class=${classMap(classes)} ></transactions-element>`;