RichText
富文本
支持情况:
类型
ComponentType<RichTextProps>
示例代码
- React
- Vue
class App extends Components {
state = {
nodes: [{
name: 'div',
attrs: {
class: 'div_class',
style: 'line-height: 60px; color: red;'
},
children: [{
type: 'text',
text: 'Hello World!'
}]
}]
}
render () {
return (
<RichText nodes={this.state.nodes} />
)
}
}
<template>
<view class="components-page">
<rich-text :nodes="nodes"></rich-text>
</view>
</template>
<script>
export default {
name: 'Index',
data() {
return {
nodes: [{
name: 'div',
attrs: {
class: 'div_class',
style: 'line-height: 60px; color: red;'
},
children: [{
type: 'text',
text: 'Hello World!'
}]
}]
}
},
onReady () {
console.log('onReady')
}
}
</script>
RichTextProps
参数 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
userSelect | boolean | false | 否 | 文本是否可选,该属性会使节点显示为 block |
nodes | Nodes | 否 | 节点列表/ HTML String | |
space | keyof TSpace | 否 | 显示连续空格 | |
selectable | string | false(基础库 3.150.1 以前版本)true(基础库 3.150.1 及以后版本) | 否 | 富文本是否可以长按选中,可用于复制,粘贴,长按搜索等场景 |
imageMenuPrevent | string | false | 否 | 阻止长按图片时弹起默认菜单(将该属性设置为image-menu-prevent或image-menu-prevent="true"),只在初始化时有效,不能动态变更;若不想阻止弹起默认菜单,则不需要设置此属性 |
preview | string | 否 | 富文本中的图片是否可点击预览。在不设置的情况下,若 rich-text 未监听点击事件,则默认开启。未显示设置 preview 时会进行点击默认预览判断,建议显示设置 preview | |
onTap | CommonEventFunction | 否 | 触摸。 | |
onTouchstart | CommonEventFunction | 否 | 触摸动作开始。 | |
onTouchmove | CommonEventFunction | 否 | 触摸移动事件。 | |
onTouchcancel | CommonEventFunction | 否 | 触摸动作被打断。 | |
onTouchend | CommonEventFunction | 否 | 触摸动作结束。 | |
onLongtap | CommonEventFunction | 否 | 触摸后,超过 500ms 再离开。 | |
mode | "default" or "compat" or "aggressive" or "inline-block" or "web" | default | 否 | 布局兼容模式 |
API 支持度
API | 微信小程序 | 百度小程序 | 支付宝小程序 | 抖音小程序 | QQ 小程序 | 京东小程序 | H5 | React Native | Harmony | Harmony hybrid |
---|---|---|---|---|---|---|---|---|---|---|
RichTextProps.userSelect | ✔️ | ✔️ | ✔️ | ✔️ | ||||||
RichTextProps.nodes | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
RichTextProps.space | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ||
RichTextProps.selectable | ✔️ | ✔️ | ✔️ | |||||||
RichTextProps.imageMenuPrevent | ✔️ | |||||||||
RichTextProps.preview | ✔️ | |||||||||
RichTextProps.onTap | ✔️ | |||||||||
RichTextProps.onTouchstart | ✔️ | |||||||||
RichTextProps.onTouchmove | ✔️ | |||||||||
RichTextProps.onTouchcancel | ✔️ | |||||||||
RichTextProps.onTouchend | ✔️ | |||||||||
RichTextProps.onLongtap | ✔️ | |||||||||
RichTextProps.mode | ✔️ |
TSpace
space 的合法值
参数 | 说明 |
---|---|
ensp | 中文字符空格一半大小 |
emsp | 中文字符空格大小 |
nbsp | 根据字体设置的空格大小 |
Text
文本节点
参数 | 类型 | 默认值 | 说明 | 备注 |
---|---|---|---|---|
type | "text" | 文本类型 | ||
text | string | "" | 文本字符串 | 支持 entities |
HTMLElement
元素节点,默认为元素节点 全局支持class和style属性,不支持 id 属性。
参数 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
type | "node" | 否 | HTML 类型 | |
name | string | 是 | 标签名 | 支持部分受信任的 HTML 节点 |
attrs | Object | 否 | 属性 | 支持部分受信任的属性,遵循 Pascal 命名法 |
children | Nodes | 否 | 子节点列表 | 结构和 nodes 一致 |
Nodes
节点类型
现支持两种节点,通过type来区分,分别是元素节点和文本节点,默认是元素节点,在富文本区域里显示的HTML节点 元素节点:type = node*
类型
(Text | HTMLElement)[] | string