javascript - 在 React 组件的 render() 中查找特定类型的子级

标签 javascript reactjs draftjs

我正在使用 Draft.js,需要递归到 props.children 来查找 DraftEditorBlock 类型的组件。

出于某种原因,这似乎并不起作用:

import React from 'react';
import { DraftEditorBlock } from 'draft-js';
...
export default class MyBlockRenderer extends React.Component {
  ...
  render() {
    const { children } = this.props;
    const firstChild = React.Children.toArray(children)[0];
    if (firstChild instanceof DraftEditorBlock) {
      ...
    }
    ...
  }
}

使用 instanceof 的行导致此错误:

TypeError: Right-hand side of 'instanceof' is not an object

我做错了什么?

最佳答案

阅读render() Draftjs 源代码中的方法自上而下。 DraftEditorBlock之间还有很多级别和DraftEditor

我建议您缓存所有创建/安装的DraftEditorBlock除了在 render() 中找到它们之外作者:

  1. 使组件继承DraftEditorBlock ,或具有单个 <DraftEditorBlock ... /> 的新组件 child 。
  2. 绘制text使用 blockRendererFn 为您的组件添加 block 类型.

应该可以。

关于javascript - 在 React 组件的 render() 中查找特定类型的子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51709427/

相关文章:

reactjs - 为什么我能够以一种方式有条件地调用 Hook ,而不能以另一种方式有条件地调用 Hook ?

draftjs - Draft.js 中列表的处理选项卡

sqlite - 使用 sql.js 读取 blob 类型的 sqlite3 数据库列时遇到问题

javascript - JQuery:如何来回切换图像?

javascript - 使用 Moment.js 和 FullCalendar 处理与日期无关的事件

reactjs - 警告 : Input is changing a controlled input of type text to be uncontrolled

javascript - 在 HTML5 中设置透明颜色

javascript - Firebase Fetch - 没有访问控制允许来源

javascript - 如何将 props 传递给 Draft.js 中装饰器的策略函数

reactjs - 草稿.js : how to preserve paragraph breaks when pasting content?