Javascript Slate JS:将道具设置为编辑器';s值

Javascript Slate JS:将道具设置为编辑器';s值,javascript,reactjs,slatejs,Javascript,Reactjs,Slatejs,我正在使用Slate JS编辑器构建一个textarea电子邮件表单。与slate默认初始状态值不同,我希望显示我自己的值,该值作为redux的道具传递给组件 因此,与此相反: <Editor spellCheck autoFocus placeholder="Enter your text..." ref={this.ref} **value = {this.state.value}** onPaste={this.onPa

我正在使用Slate JS编辑器构建一个textarea电子邮件表单。与slate默认初始状态值不同,我希望显示我自己的值,该值作为redux的道具传递给组件

因此,与此相反:

        <Editor
    spellCheck
    autoFocus
    placeholder="Enter your text..."
    ref={this.ref}
    **value = {this.state.value}**
    onPaste={this.onPaste}
    onChange={this.onChange}
    renderNode={this.renderNode}
    renderMark={this.renderMark}
    />

我正在这样做:

        <Editor
    spellCheck
    autoFocus
    placeholder="Enter your text..."
    ref={this.ref}
    **value = {Value.fromJSON(JSON.stringify(this.props.richText))}**
    onPaste={this.onPaste}
    onChange={this.onChange}
    renderNode={this.renderNode}
    renderMark={this.renderMark}
    />


因此,prop作为对象传递,首先转换为json,然后转换为所需的slate编辑器格式。这不会打断组件,但该值不会显示在编辑器中。我做错了什么?将slate editor值设置为道具的正确方法是什么?谢谢你在这方面的帮助

Slate中的
不仅仅是文本字段的值,基本上存储了Slate编辑器的所有数据

要从props传入数据,您需要反序列化
this.props.richText
并将其存储在state中,然后每次
编辑器
更改时更新state的
。如果你想要一个纯文本编辑器,你可以这样做

import { Editor } from 'slate-react'
import Plain from 'slate-plain-serializer'
​
class App extends React.Component {
  state = {
    value: Plain.deserialize(this.props.richText),
  }
​
  onChange = ({ value }) => {
    this.setState({ value })
  }
​
  render() {
    return <Editor value={this.state.value} onChange={this.onChange} />
  }
}
从'slate react'导入{Editor}
从“slate平原序列化程序”导入平原
​
类应用程序扩展了React.Component{
状态={
值:Plain.deserialize(this.props.richText),
}
​
onChange=({value})=>{
this.setState({value})
}
​
render(){
返回
}
}
如果您想要一个富文本或html编辑器,则反序列化会稍微复杂一些,但如果您遵循以下指南,则会非常简单:

  • 富文本&

尝试删除JSON.stringify方法调用,根据文档,所需类型是一个对象,而不是我也在考虑的JSON字符串。fromJSON要求传递的对象是string/JSON对象查看后,它们传入的是一个对象(在L5导入),而不是字符串