【发布时间】:2017-10-10 07:36:23
【问题描述】:
我有一个包含许多子元素的 React (15.5.4) 组件,其中一些是 HTML 元素,一些是其他 React 组件。
我正在使用服务器渲染,并且需要在服务器和客户端上具有相同的行为。客户端将使用 React 的生产版本。
我需要遍历子元素并确定特定类型的 React 组件。所以我的第一个想法是使用React.Children.forEach() 进行迭代并查找组件名称。
React.Children.forEach(this.props.children, child => {
console.log('name =', child.name)
})
child.name 和 child.displayName 似乎不存在。
现在,child.type 存在,它要么是一个字符串(对于 HTML 元素),比如 "ul",要么是一个函数(对于 React 组件)。
当它是一个函数时,我可以像这样使用lodash/get const type = get(child, 'type.name', '') 来获取组件名称。 然而,这似乎只在服务器上工作,而不是在客户端生产版本中,它返回一个字符串:"t"。看起来开发版本使用我的组件名称作为功能,但生产版本将其重命名为t()。所以我不能使用child.type.name。
我该怎么做:
- 遍历子组件并识别特定类型的组件..?
- 哪个在开发和生产 React 构建中都有效..?
【问题讨论】:
标签: javascript reactjs