javascript - react : How to check the type of a child in the parent's render function?

标签 javascript reactjs

我知道在渲染期间我可以通过 refs 获取子项,例如,调用子项上的函数(我可以为此目的将其添加到子项中)来确定子项的类型。

<Child ref={(child) => {this._childType = child.myFunctionToGetTheType();}} />

但在这个例子中,直到子进程被挂载之后,也就是父进程的渲染完成执行之后,该函数才会被真正调用。

我有一个通过 props 接收其子组件的父组件。因为React limitations我需要在父级的 render 完成执行之前以特殊的方式处理特定的子级(即从父级的 render 函数为该特定子级返回其他内容)。

是否可以在从父级的 render 函数返回之前确定子级的类型(即不使用引用)?

最佳答案

我也遇到了同样的问题,我依靠 child.type.name 来确定组件的类型。虽然这对我来说效果很好,但问题是旧浏览器不知何故不支持它,所以我必须找到另一种方法。我正在使用无状态功能组件并且不想切换,所以最终利用了 props

const MySFC = () => {
  //...
  return (
    <div className="MySFC"></div>
  );
};

MySFC.propTypes = {
  type: PropTypes.string
};

MySFC.defaultProps = {
  type: "MySFC"
}

export default MySFC;

然后我没有使用 child.type.name === 'MySFC' 我使用 child.props.type === 'MySFC'

不理想,但可行

关于javascript - react : How to check the type of a child in the parent's render function?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41186907/

相关文章:

javascript - Widget模板的跨域加载

javascript - JQuery:如何在正文中添加脚本?

javascript - 使用 webpack 和 jspm 以及外部依赖

javascript - React - 添加 onClick 后重新渲染太多

node.js - 如何使 "npm run start"退出并显示代码 0?

javascript - 使用 Protractor selenium 从弹出窗口捕获文本

javascript - session 丢失时触发客户端事件

javascript - 在栏顶部显示文本并在 d3 中更改 x 轴文本颜色

javascript - eslint+流: 'attribute' is missing in props validation (Object with identifier)

javascript - Auth0 不会在电子邮件/密码的页面刷新时保持登录