draft对于一些简单的文本加点样式就能搞定的提供了集中自定义的方式,分为两种情况,块级样式,行内样式,块级之间不可叠加!!!!,其他都可以叠加。
1. 块级样式自定义
首先呢,分几种情况,一种覆盖已存在的块级样式,一种完全创造个新的自己定义的,这里就演示完全捏造一个,覆盖的话只要用已有的名字标签就行,其实没必要,自定义就行。我这定义一个suibian
的块级样式,红色的大字体。
官网也有个文档里面列举了一些内置的块级标签定义和自定义的演示。
先要添加这个块级的名称以及对应的标签,配置Editor属性
blockRenderMap={DefaultDraftBlockRenderMap.merge(blockRenderMap)}
这句话呢就是把自定义的标签和已有的合并
const blockRenderMap = Immutable.Map({
'suibian': {
element: 'div',
},
});
配置Editor属性blockStyleFn={getBlockStyle}
const styles = {
suibian:{
color:red,
fontSize:20,
}
}
function getBlockStyle(block) {
switch (block.getType()) {
case 'suibian':
return styles['suibian'];
default: return null;
}
}
2. 行内样式自定义
行内样式可以叠加,只要配置下就行,因为不需要标签映射,直接映射样式就行,还是定义一个样式36px
,作用把字体设为36px
配置Editor属性customStyleMap={styleMap}
const styleMap = {
'36px':{
fontSize: 36
}
};
然后就可以在需要的地方用这个inlinestyle了
3. 小结
具体代码可以参考前面一篇文章Draftjs 学习笔记-自定义控件(多媒体),再次强调下块级样式,行内样式,块级之间不可叠加!!!!,其他都可以叠加。根据需要来进行选择适合你的。