鸿蒙 next 使用并封装富文本 hp-richtext

鸿蒙 next 使用并封装富文本 hp-richtext
使用鸿蒙第三方富文本(https://ohpm.openharmony.cn/#/cn/detail/@ohasasugar%2Fhp-richtext) , 并再将其包一层实现自己的富文本组件,这样的好处是以后可以自己再里面添加一下逻辑,或者以后可以更换成其他的富文本组件。

import { HPRichText, RichTextOption } from '@ohasasugar/hp-richtext';
import { LogUtil } from '../../../common/utils/LogUtil';

type ImgType = 'heightLimit' | 'widthLimit' | 'maxWidth'

@Component
export struct QuesRichText {
@Prop @Watch('onUpdate') fontSize: number = 16;
@Prop @Watch('onUpdate') fontColor: string = "#FF465069";
@Prop @Watch('onUpdate') richContent: string = '';
@Consume @Watch('onUpdate') scaleTextStyle: number;
@State richTextOption: RichTextOption = {
content: ``,
baseFontSize: 0,
baseFontColor: ''
}; // 富文本对象
@State realContent: string = '';
@State imgType: ImgType = 'widthLimit';

onUpdate() {
this.richTextOption =
{
content: this.getRichContent(this.richContent),
baseFontSize: this.fontSize * this.scaleTextStyle,
baseFontColor: this.fontColor,
};
}

aboutToAppear() {
this.onUpdate()
}

// aboutToAppear(): void {
// cbwe.62nsfs.com,cbwe.jinduoceramics.com,cbwe.shuixitech.com
//cbwe.huanbao580.com,cbwe.szlcdpq.com
// this.realContent = this.richTextOption.content;
// if (this.imgType == 'widthLimit') {
// this.richTextOption.content =
// this.richTextOption.content.replace(/<img/g, '<img style="width: 160vp;height: auto;"')
// } else if (this.imgType == 'heightLimit') {
// this.richTextOption.content =
// this.richTextOption.content.replace(/<img/g, '<img style="width: auto;height: 65vp;"')
// } else if (this.imgType == 'maxWidth') {
// // 看了HPRichText的源码-不支持max-width属性, 但是可以用 constraintSize 实现
// this.richTextOption.content =
// this.richTextOption.content.replace(/<img/g, '<img style="max-width: 100vp"')
// }
// }

getRichContent(value: string) {
let tempValue = value;
if (this.imgType == 'widthLimit') {
tempValue =
tempValue.replace(/<img/g, '<img style="width: 160vp;height: auto;"')
} else if (this.imgType == 'heightLimit') {
tempValue =
tempValue.replace(/<img/g, '<img style="width: auto;height: 65vp;"')
} else if (this.imgType == 'maxWidth') {
// 看了HPRichText的源码-不支持max-width属性, 但是可以用 constraintSize 实现
tempValue =
tempValue.replace(/<img/g, '<img style="max-width: 100vp"')
}

LogUtil.info("tempValue", tempValue)

return tempValue;

}

build() {
if (this.richTextOption.content) {
HPRichText({
richTextOption: this.richTextOption,
})

}

}
}

使用:

QuesRichText({
cbwe.sh-soyun.com,cbwe.clzyfc.com,cbwe.scffy.cn
cbwe.cnjiasi.cn,cbwe.xintiao78.com
richContent: "

hell world

",
})

posted @ 2024-11-14 08:57  个人问过  阅读(24)  评论(0编辑  收藏  举报