ReactJS 从 API 接收数据并将其作为道具传递给 DraftJS
ReactJS receiving data from API passing it as props to DraftJS
我对 Reactjs 比较陌生,在这里我遇到了一些难题。我在一个简单的应用程序中使用 Draftjs 作为所见即所得的编辑器。当从 API 接收数据(像往常一样)然后通过道具将其传递给子组件时,我在更新 EditorState 时遇到问题。我假设我需要在开始时这样创建 EditorState:
componentWillMount() {
this.setState({editorState: EditorState.createEmpty()});
}
然后当我从 API 收到道具时,我想用收到的道具更新 EditorState。所以在我的脑海和理想世界中,我会做这样的事情:
componentWillReceiveProps() {
let processedHTML = DraftPasteProcessor.processHTML(this.props.text);
let contentState = ContentState.createFromBlockArray(processedHTML);
this.setState({editorState: EditorState.createWithContent(contentState)});
}
但事实似乎并非如此。 ComponentWillReceiveProps() 当我在网上阅读时不会等到 props 更新为从 API 传递的值,ComponentWilLReceiveProps() 在收到来自 API 的数据之前运行,我收到以下错误:
任何对 Reactjs 有更多经验的人可以就此向我提出建议?如何在从 API 接收到信息时更新 EditorSTate。也许值得注意,这就是我将数据从父级传递到组件的方式。
<WysiwygEditor full={true} text={this.props.error.errorText}/>
componentWillReceiveProps
接受一个给出下一个道具的参数,你应该使用它,因为在这个方法中 this.props
会给你 "previous" 道具。
componentWillReceiveProps(nextProps) {
if (this.props.text !== nextProps.text) {
let processedHTML = DraftPasteProcessor.processHTML(nextProps.text);
let contentState = ContentState.createFromBlockArray(processedHTML);
this.setState({editorState: EditorState.createWithContent(contentState)});
}
}
我还添加了一个条件,以确保您仅在文本更改时更新文本。
我对 Reactjs 比较陌生,在这里我遇到了一些难题。我在一个简单的应用程序中使用 Draftjs 作为所见即所得的编辑器。当从 API 接收数据(像往常一样)然后通过道具将其传递给子组件时,我在更新 EditorState 时遇到问题。我假设我需要在开始时这样创建 EditorState:
componentWillMount() {
this.setState({editorState: EditorState.createEmpty()});
}
然后当我从 API 收到道具时,我想用收到的道具更新 EditorState。所以在我的脑海和理想世界中,我会做这样的事情:
componentWillReceiveProps() {
let processedHTML = DraftPasteProcessor.processHTML(this.props.text);
let contentState = ContentState.createFromBlockArray(processedHTML);
this.setState({editorState: EditorState.createWithContent(contentState)});
}
但事实似乎并非如此。 ComponentWillReceiveProps() 当我在网上阅读时不会等到 props 更新为从 API 传递的值,ComponentWilLReceiveProps() 在收到来自 API 的数据之前运行,我收到以下错误:
任何对 Reactjs 有更多经验的人可以就此向我提出建议?如何在从 API 接收到信息时更新 EditorSTate。也许值得注意,这就是我将数据从父级传递到组件的方式。
<WysiwygEditor full={true} text={this.props.error.errorText}/>
componentWillReceiveProps
接受一个给出下一个道具的参数,你应该使用它,因为在这个方法中 this.props
会给你 "previous" 道具。
componentWillReceiveProps(nextProps) {
if (this.props.text !== nextProps.text) {
let processedHTML = DraftPasteProcessor.processHTML(nextProps.text);
let contentState = ContentState.createFromBlockArray(processedHTML);
this.setState({editorState: EditorState.createWithContent(contentState)});
}
}
我还添加了一个条件,以确保您仅在文本更改时更新文本。