使用 HOC 包装 parent 时反应 children
React children's when using HOC to wrap parent
我正在使用 React 16.8.6,我有以下结构:
page.js
<ParentComponent id="testData">
<ChildComponent value={data => data.text} />
</ParentComponent>
parentComponent.tsx
export default class ParentComponent extends React.PureComponent<IParentProps> {
...
render() {
const items = this.props.children;
<MiddleComponent items={items} />
}
}
ParentContainer.ts
import { withTranslation } from 'react-i18next';
import ParentComponent from './ParentComponent';
export default withTranslation()(ParentComponent);
我需要知道 MiddleComponent
内部的元素类型(不是字符串而是 React 元素,因为我要基于它创建一个新元素) 每个 child(所以,在这种情况下我应该有 ChildComponent
),但是当我用 chrome 检查时,我所有的 children 都有一个 I18nextWithTranslation
输入...
知道如何解决这个问题吗?或者如果这可能是一个已知错误?
如果我根本不使用任何 hoc,当我写 child.type
时它 returns 我 ChildComponent(props)
。但当我使用 hocs 包装 parent...
时,情况并非如此
在下面的示例中,我们在组件上设置 Component.displayName,以便我们可以在父级中访问 属性。这是一个非常简单的示例,如果需要,可以扩展为使用一组子项。
const ChildComponent = () => {
return <div>child render</div>
}
ChildComponent.displayName = "MyComponentName"
const ParentComponent = ({ children }) => {
// This is the type of component.. should output "MyComponentName"
const childType = children.type.displayName
return (
<div>
<h1>Render Children</h1>
{children}
</div>
)
}
function App() {
return (
<ParentComponent>
<ChildComponent />
</ParentComponent>
)
}
这个问题很愚蠢...
我正在导入 <ChildComponent>
作为默认导入,即使子项没有作为默认导出。
基本上
import ChildComponent from ''
而不是 import { ChildComponent } from ''
我正在使用 React 16.8.6,我有以下结构:
page.js
<ParentComponent id="testData">
<ChildComponent value={data => data.text} />
</ParentComponent>
parentComponent.tsx
export default class ParentComponent extends React.PureComponent<IParentProps> {
...
render() {
const items = this.props.children;
<MiddleComponent items={items} />
}
}
ParentContainer.ts
import { withTranslation } from 'react-i18next';
import ParentComponent from './ParentComponent';
export default withTranslation()(ParentComponent);
我需要知道 MiddleComponent
内部的元素类型(不是字符串而是 React 元素,因为我要基于它创建一个新元素) 每个 child(所以,在这种情况下我应该有 ChildComponent
),但是当我用 chrome 检查时,我所有的 children 都有一个 I18nextWithTranslation
输入...
知道如何解决这个问题吗?或者如果这可能是一个已知错误?
如果我根本不使用任何 hoc,当我写 child.type
时它 returns 我 ChildComponent(props)
。但当我使用 hocs 包装 parent...
在下面的示例中,我们在组件上设置 Component.displayName,以便我们可以在父级中访问 属性。这是一个非常简单的示例,如果需要,可以扩展为使用一组子项。
const ChildComponent = () => {
return <div>child render</div>
}
ChildComponent.displayName = "MyComponentName"
const ParentComponent = ({ children }) => {
// This is the type of component.. should output "MyComponentName"
const childType = children.type.displayName
return (
<div>
<h1>Render Children</h1>
{children}
</div>
)
}
function App() {
return (
<ParentComponent>
<ChildComponent />
</ParentComponent>
)
}
这个问题很愚蠢...
我正在导入 <ChildComponent>
作为默认导入,即使子项没有作为默认导出。
基本上
import ChildComponent from ''
而不是 import { ChildComponent } from ''