javascript - 如何将 ref 传递给使用 onClickOutside('react-onclickoutside') 的 HOC?
问题描述
我onClickOutside('react-onclickoutside')
用于我的 HOC,但我无法为这个 HOC 传递 ref,我有类似下面的内容并出现错误:
const inputRef = useRef();
....
<SomeCompontnt
inputRef={inputRef}
items={items}
onSelect={onSelect}
value={selectedItem}
/>
....
export default onClickOutside(forwardRef(
(props, inputRef) => <MyHoc inputRef={inputRef} {...props} />)
);
....
错误
未捕获的类型错误:无法读取 onClickOutside.render 处未定义的属性“isReactComponent”(react-onclickoutside.es.js?7e48:325)
解决方案
试试这个:你可以在 OnclickoutsideDemo MyHookClick 控制台中看到 MyHoc onClick 输出
import React from "react";
import { render } from "react-dom";
import onClickOutside from "react-onclickoutside";
class OnclickoutsideDemo extends React.Component {
constructor(props) {
super(props);
this.state = {};
}
render() {
const options = this.state.showOptions ? (
<MyHookClick
onClick={e => console.log(e)}
handleClickOutside={() => this.setState({ showOptions: false })}
/>
) : null;
return (
<div>
<span
onClick={() =>
this.setState({ showOptions: !this.state.showOptions })
}
>
Click Me
</span>
{options}
</div>
);
}
}
const MyHoc = React.forwardRef((props, ref) => (
<div ref={ref} onClick={e => props.onClick("HaHa")}>
Click Me to see HaHa in console !
</div>
));
const MyHookClick = onClickOutside(props => (
<MyHoc ref={props.inputRef} {...props} />
));
export default OnclickoutsideDemo;
render(<OnclickoutsideDemo />, document.getElementById("root"));
推荐阅读
- artificial-intelligence - PPO 算法只收敛于一个动作
- java - 如何使用 `com.fasterxml.jackson.core.JsonParser` 确定 json 数组的大小
- bash - 使用 bash 格式化 .csv
- python - Python:在 python 烧瓶网页中显示网页中的整个 div
- android - 屏幕旋转后,适配器不在 Fragment 中维护
- android-studio - 如何在 Android Studio 中使用 4 空格宽的制表符?
- reactjs - React 三纤和 react-router-dom。错误:不能在外面使用
- multithreading - 此 C++ 互斥代码的 Rust 等效代码
- android - 在任何活动中显示小吃吧
- html - 内容不同时如何在css中设置相等的高度