1 回答
TA贡献2011条经验 获得超2个赞
正如您所尝试的那样,使用 ref 作为字符串是 React 旧 API 的传统方式。
他们不建议使用它:
如果您以前使用过 React,您可能会熟悉旧的 API,其中 ref 属性是一个字符串,如“textInput”,并且 DOM 节点通过 this.refs.textInput 进行访问。我们建议不要这样做,因为字符串引用存在一些问题,被认为是遗留问题,并且可能会在未来的版本之一中被删除。
注意:如果您当前正在使用 this.refs.textInput 来访问引用,我们建议您改用回调模式或 createRef API。
使用React.createRef()
,
并且您可以使用current
ref 变量的属性来访问它,如下所示:
class Test extends React.Component {
constructor() {
super(props);
this.selectorRef = React.createRef(null);
}
componentDidMount() {
document.addEventListener("mousedown", this.handleClickOutside);
}
componentWillUnmount() {
document.removeEventListener("mousedown", this.handleClickOutside);
}
handleClickOutside = event => {
console.log(this.selectorRef.current);
}
handleClickInside = () => {
alert("Clicked inside")
}
render = () => {
return (
<ThemeProvider theme={theme}>
<Container disabled={disabled}>
<SelectorDiv
onClick={this.handleClickInside}
ref={selectorRef}
>
<h1>This is the content to click</h1>
</SelectorDiv>
</Container>
</ThemeProvider>
);
};
}
export default Test;
在沙盒上检查一下
在功能组件中你可以使用React hookuseRef()
添加回答
举报