Closed mablevi closed 5 years ago
braft-utils这个包,暂时还没有对应的ts声明文件,你看看能不能通过别的办法解决掉这个报错吧
大佬,我其实想做的是antd表单 upload上传返回URL之后
this.setState({
editorState: ContentUtils.insertMedias(this.state.editorState, [{
type: 'IMAGE',
url: 'http://pic41.photophoto.cn/20161024/0017030261398198_b.jpg'
}])
})
图片没有插进去
initialValue: this.state.editorState,
看看你getFieldDecorator那一块的代码?
{
getFieldDecorator('content', {
initialValue: this.state.editorState,
validateTrigger: 'onBlur',
rules: [
{
required: true,
validator: (_, value,callback) => {
if(value.isEmpty()) {
callback('请输入内容')
} else {
callback()
}
}
}
]
}
)(
<BraftEditor
className="my-editor"
controls={controls}
placeholder="请输入正文内容"
extendControls= {extendControls}
/>
)
}
用了antd form的话,就不适合再在state里面管理这个组件的状态了,而且initialValue只会在第一次传入的时候有效,暂时不支持动态设置,异步设置编辑器的内容,可以用antd form的setFieldsValue方法,你试试这样用:
this.props.form.setFieldsValue({
content: ContentUtils.insertMedias(this.props.form.getFieldValue('content'), [{
type: 'IMAGE',
url: 'http://pic41.photophoto.cn/20161024/0017030261398198_b.jpg'
}])
})
此方法可以解决,万分感谢!跪谢大佬!
刚哥 又碰到一个问题了,我在mapPropsToFields回填antd表单的时候,
state ={
fields:{
title: {
value: 'test'
},
editorState: {
// 这里应该如何传参?
value: BraftEditor.createEditorState('<p>Hello <b>World!</b></p>')
}
}
}
你上面的代码是外层组件里面声明状态的那一段么?那你在子组件里面:
mapPropsToFields(props) {
return {
editorState: Form.createFormField({
...props.editorState,
value: props.editorState.value,
}),
};
}
这样写拿不到值么? 我没用过mapPropsToFields这个功能,但是按照antd的文档来看应该就是这样写的吧
好的,我试试去
无法找到braft-utils 怎么解决的?
请问 用antd form的话,能支持动态设置,异步设置编辑器的内容吗,以下代码好像没有生效:
this.setState({ editorState: ContentUtils.insertMedias(this.state.editorState, [{ type: 'IMAGE', url: URL.createObjectURL }]) })
"react": "^16.7.0", "antd": "^3.12.4", "axios": "^0.18.0", "braft-editor": "^2.2.5", "prop-types": "^15.6.2", "react-router-dom": "^4.3.1"