javascript - React 将 ref 传递给相邻组件

标签 javascript reactjs ref

我想访问一个 SVG 元素的位置,以便在 React 中绘制另一个 SVG 元素。因此,我想使用 getBoundingClientRect() 并需要从相邻的 SVG 元素访问第一个 SVG 元素的 DOM。

编辑: 示例:我有一个,想在其顶部绘制一个矩形

OtherSVGELement 安装后,我可以访问圆圈引用。但在渲染 rect

时,我无法访问相邻的 circle 元素 ref
class ParentComponent extends React.Component {
    constructor(props) {
        super(props);
        this.firstRef = React.createRef();
    };
    render() {
        return (
            <svg>
                <circle ref={this.firstRef} />
                <OtherSVGElement circleRef={this.firstRef}/>
            </svg>
        )
    };
};

class OtherSVGElement extends React.Component {
    constructor(props) {
        super(props);
    };

    componentDidMount() {
        console.log(this.props.circleRef.current);
    };


    render() {
       return (
           <svg>
               /* Doesn't work; current is null */
               <rect x=this.props.circleRef.current.x /> 
           </svg>
       )
    };
};

如何克服这个问题?就我而言,圆圈位置更难获得。这就是为什么我想使用 getBoundingClientRect()

最佳答案

你的直觉是正确的。您将能够访问其他生命周期 Hook 中的引用,例如 componentDidMountcomponentDidUpdate:

componentDidMount() {
  console.log(this.props.otherRef);
}

顺便说一句,您可能正在寻找 ref 上的 current 属性 (this.props.otherRef.current),它将是对DOM 节点。

关于javascript - React 将 ref 传递给相邻组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57469680/

相关文章:

javascript - Firebase 匿名登录安全

javascript - 从另一个函数更改函数内的变量,最好的方法是什么?

javascript - onclick 函数内的 fadeOut

java - 将 Javascript 中的字符串发送到 Play Framework 中的 java 方法

erlang - erlang refs 在节点/VM 重启之间是唯一的吗?

c# - 可以引用一下吗?

reactjs - 使用 Jest 模拟 API 错误响应时,组件中的 Fetch 未定义

javascript - 未捕获的 TypeError : . 包含不是 React Ref 的函数

javascript - Passport.js - 将数据发送回react/redux应用程序,同时在登录后重定向

typescript - this.$refs.Form.validate 不是我的 vue 组件中的函数