javascript - 将函数 react 组件转换为 react 类以添加 ref 属性

标签 javascript reactjs

我有一个带有触发元素的组件,触发元素是一个像下面这样的 react 组件

const TriggerComponent = () => <div> trigger example </div>

<MyComponent  trigger={<TriggerComponent />} />

在MyComponent类内部,我想通过cloneElement或creatElement API向触发元素添加ref属性,当然,根据react文档,我无法向功能组件添加ref属性。所以我的想法是将函数组件转换为类?

如果您对如何实现这个想法有任何想法,请告诉我?

最佳答案

将 ref 添加到有状态组件子组件的最佳方法是创建一个类 Ref 并将函数组件作为子组件注入(inject),如下所示:

class Ref extends React.Component {
constructor(props) {
  super(props);
}
componentDidMount() {
  const { innerRef } = this.props;
  if (innerRef) innerRef(findDOMNode(this));
}
render() {
  const { children } = this.props;
  return React.Children.only(children);
}

}

我们可以向函数组件添加引用。

const Trigger = ()=> <button> trigger </button>
const RefTrigger = () => <Ref innerRef={this.setRef}><Trigger/></Ref>

关于javascript - 将函数 react 组件转换为 react 类以添加 ref 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48842537/

相关文章:

reactjs - Jest 单元测试 - 如何模拟表行图标的单击事件

javascript - 在 React 中为 JSX 组件添加过渡效果

javascript - 从 URL 内联导入 SVG

javascript - Javascript 中的简单 BPM 或工作流程

javascript - 解析 "... has no method ' 替换时 JSON 错误'"

reactjs - Redux Saga-将结果返回给被调用者函数,而不是分派(dispatch)新操作

javascript - 在我的案例中,如何使用 createSwitchNavigator 从注销导航到登录屏幕?

javascript - 如何在 keyup 上显示表单字段

javascript - 在以下代码中创建 react 应用程序时获取 "Parsing error: Unexpected token, expected ";""

javascript - 如何在 Javascript 文本节点中获取 HTML 标签?