Closed wangzhipeng404 closed 6 years ago
你好,你用的是什么版本? 使用代码贴一下看看
如果用的1.x版本的braft-editor,那看看node_modules下面的braft-convert的版本,如果是2.x,就npm install一下1.9.8版本的braft-convert试试
以下为源码,版本为2.x
import React from 'react';
import { Form } from 'antd';
import BraftEditor, { EditorState } from 'braft-editor';
import 'braft-editor/dist/index.css';
import { BaseImgUrl, getQiniuToken } from '../../common/config';
import { htmlIsEmpty } from '../../utils/utils';
const FormItem = Form.Item;
const formItemLayout = {
labelCol: {
xs: { span: 24 },
sm: { span: 7 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 12 },
md: { span: 10 },
},
};
const handleEditorupload = param => {
getQiniuToken().then(token => {
const serverURL = 'http://up-z2.qiniu.com';
const xhr = new XMLHttpRequest();
const fd = new FormData();
const successFn = () => {
const blkRet = JSON.parse(xhr.responseText);
param.success({
url: BaseImgUrl + blkRet.key,
});
};
const progressFn = event => {
param.progress(event.loaded / event.total * 100);
};
const errorFn = () => {
param.error({ msg: '上传失败' });
};
xhr.upload.addEventListener('progress', progressFn, false);
xhr.addEventListener('load', successFn, false);
xhr.addEventListener('error', errorFn, false);
xhr.addEventListener('abort', errorFn, false);
fd.append('file', param.file);
fd.append('token', token);
xhr.open('POST', serverURL, true);
xhr.send(fd);
});
};
export const editorProps = {
height: 500,
media: {
uploadFn: handleEditorupload,
},
imageControls: [],
fontFamilies: [],
};
export const Editor = props => {
const { form, initialValue, name, label, required = true, editorOptions = {} } = props;
const { getFieldDecorator } = form;
const newProps = {
...editorProps,
...editorOptions,
};
const layout = props.formItemLayout || formItemLayout;
const defaultValue = EditorState.createFrom(initialValue);
const validateEditor = (rule, value, callback) => {
if (required && htmlIsEmpty(value)) {
callback(`${label}不能为空,请输入`);
} else {
callback();
}
};
return (
<FormItem {...layout} label={label}>
{getFieldDecorator(name, {
getValueFromEvent: editorState => editorState.toHTML(),
rules: [
{
validator: validateEditor,
},
],
initialValue: defaultValue,
})(<BraftEditor {...newProps} style={{ border: '1px solid #e8e8e8' }} />)}
</FormItem>
);
};
早上我看了一下你的源码,估计也是这一块的原因,但是装成了draft-convert,所以没成功 我刚才尝试了npm install braft-convert@^2.1.4,问题解决了,谢谢
好的,在antd form中使用的话,还可以用上一些别的特性,例如通过editorState.isEmpty()来判断内容是否为空,最近新增了很多功能但是还没来得及更新文档
参考: https://braft.margox.cn/demos/antd-form 这个是今天刚更新的新官网
isEmpty还是只判断
吗,我记得isEmpty这个需求是我提的哈哈超能刚哥 notifications@github.com于2018年10月12日 周五14:46写道:
好的,在antd form中使用的话,还可以用上一些别的特性,例如通过editorState.isEmpty()来判断内容是否为空,最近新增了很多功能但是还没来得及更新文档
参考: https://braft.margox.cn/demos/antd-form 这个是今天刚更新的新官网
— You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub https://github.com/margox/braft-editor/issues/247#issuecomment-429222241, or mute the thread https://github.com/notifications/unsubscribe-auth/AFtjKDW0dzMRlIRQRa2Xm1YoQ82U3y7Zks5ukDregaJpZM4XXQfJ .
这个isEmpty方法,其实判断的就是editorState.getCurrentContent().getPlainText().length,和之前判断
相比,性能会好一些,毕竟不用进行一次toHTML的转换那应该比我的快很多,我的是正则获取全部表签内的内容来判断的,之后我改成自带的这个就行了
超能刚哥 notifications@github.com于2018年10月12日 周五14:52写道:
这个isEmpty方法,其实判断的就是editorState.getCurrentContent().getPlainText().length,和之前判断
相比,性能会好一些,毕竟不用进行一次toHTML的转换
— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/margox/braft-editor/issues/247#issuecomment-429223585, or mute the thread https://github.com/notifications/unsubscribe-auth/AFtjKJ3py8IEGvTnYD_VA2bEEmsxHENjks5ukDxAgaJpZM4XXQfJ .
@margox 不开新问题,直接在这里问了。 希望通过粘贴html内容,来自动插入a标签,html代码如下。 PS:stripPastedStyles={true}加了这个也不行。
<a style="color: #fff; text-decoration: none; display: inline; padding: 15px 40px; background: #53b778; border-radius: 5px; margin-right: 50px;" href="{{disAgreeUrl}}" target="_blank" rel="noopener">填写登记表</a>
谢谢!
以下是,粘贴的时候console出来的错误