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()
添加回答
舉報