Reactjs 如何在父类组件中获取子类组件的DOM引用
我很难理解如何从父类组件访问子类组件的DOM ref Parent.js:Reactjs 如何在父类组件中获取子类组件的DOM引用,reactjs,ref,Reactjs,Ref,我很难理解如何从父类组件访问子类组件的DOM ref Parent.js: 从“/Child”导入子项; 类父级扩展组件{ 建造师(道具){ 超级(道具); this.refOfTheParent=React.createRef(); } componentDidMount(){ const parentDOM=this.refOfTheParent.current; //常数childDOM=???; } render(){ 返回( ); } } 导出默认父对象; Child.js: 类子级
从“/Child”导入子项;
类父级扩展组件{
建造师(道具){
超级(道具);
this.refOfTheParent=React.createRef();
}
componentDidMount(){
const parentDOM=this.refOfTheParent.current;
//常数childDOM=???;
}
render(){
返回(
);
}
}
导出默认父对象;
Child.js:
类子级扩展组件{
render(){
返回(
子组件
);
}
}
导出默认子对象;
有人能帮我完成这段代码吗?Parent::componentDidMount()
中的childDOM
的DOM引用是
额外好处:如果父级和子级都使用react-redux connect连接,情况会如何。您可以使用
forwardRef
class Child extend React.Component{
render() {
return (
<div ref={this.props.forwardRef}> Child component </div>
)
}
}
export default React.forwardRef((props, ref) => <Child {...props} forwardRef={ref} />)
类子扩展React.Component{
render(){
返回(
子组件
)
}
}
导出默认的React.forwardRef((props,ref)=>)
然后是父母
constructor(props) {
// ...
this.childRef = React.createRef();
}
render() {
return (
<div>
<Child ref={this.childRef} />
</div>
)
}
构造函数(道具){
// ...
this.childRef=React.createRef();
}
render(){
返回(
)
}
更多信息您可以使用
forwardRef
class Child extend React.Component{
render() {
return (
<div ref={this.props.forwardRef}> Child component </div>
)
}
}
export default React.forwardRef((props, ref) => <Child {...props} forwardRef={ref} />)
类子扩展React.Component{
render(){
返回(
子组件
)
}
}
导出默认的React.forwardRef((props,ref)=>)
然后是父母
constructor(props) {
// ...
this.childRef = React.createRef();
}
render() {
return (
<div>
<Child ref={this.childRef} />
</div>
)
}
构造函数(道具){
// ...
this.childRef=React.createRef();
}
render(){
返回(
)
}
更多信息您可以在子组件中传递道具中的ref,如
import React,{Component} from 'react';
import Child from './Child';
class Parent extends Component {
constructor(props) {
super(props);
this.refOfTheParent = React.createRef();
this.childRef=React.createRef();
}
componentDidMount() {
const parentDOM = this.refOfTheParent.current;
const childDom=this.childRef.current;
console.log(childDom);
//const childDOM = ???;
}
render() {
return (
<div ref={this.refOfTheParent}>
<Child childRef={this.childRef}/>
</div>
);
}
}
export default Parent
import React,{Component}来自'React';
从“./Child”导入子项;
类父级扩展组件{
建造师(道具){
超级(道具);
this.refOfTheParent=React.createRef();
this.childRef=React.createRef();
}
componentDidMount(){
const parentDOM=this.refOfTheParent.current;
const childDom=this.childRef.current;
console.log(childDom);
//常数childDOM=???;
}
render(){
返回(
);
}
}
导出默认父级
子组件
import React,{Component} from 'react';
class Child extends Component {
render() {
return (
<div ref={this.props.childRef} id="1">Child component</div>
);
}
}
export default Child;
import React,{Component}来自'React';
类子扩展组件{
render(){
返回(
子组件
);
}
}
导出默认子对象;
您可以在子组件中传递道具中的ref,如
import React,{Component} from 'react';
import Child from './Child';
class Parent extends Component {
constructor(props) {
super(props);
this.refOfTheParent = React.createRef();
this.childRef=React.createRef();
}
componentDidMount() {
const parentDOM = this.refOfTheParent.current;
const childDom=this.childRef.current;
console.log(childDom);
//const childDOM = ???;
}
render() {
return (
<div ref={this.refOfTheParent}>
<Child childRef={this.childRef}/>
</div>
);
}
}
export default Parent
import React,{Component}来自'React';
从“./Child”导入子项;
类父级扩展组件{
建造师(道具){
超级(道具);
this.refOfTheParent=React.createRef();
this.childRef=React.createRef();
}
componentDidMount(){
const parentDOM=this.refOfTheParent.current;
const childDom=this.childRef.current;
console.log(childDom);
//常数childDOM=???;
}
render(){
返回(
);
}
}
导出默认父级
子组件
import React,{Component} from 'react';
class Child extends Component {
render() {
return (
<div ref={this.props.childRef} id="1">Child component</div>
);
}
}
export default Child;
import React,{Component}来自'React';
类子扩展组件{
render(){
返回(
子组件
);
}
}
导出默认子对象;
您想访问div,或者想从父级渲染一些值,为什么我会这样问,因为不使用Refs,您应该使用State,而不建议使用Refs。我希望div在子级中。和父母身份一样,但对孩子来说。这是为了什么?可能是XY问题,需要以另一种方式解决。您想访问div,或者想从父级呈现一些值。为什么我这样问是因为您不应该使用Refs,而应该使用State,不建议使用Refs。我希望div位于子级。和父母身份一样,但对孩子来说。这是为了什么?可能是XY问题,需要用另一种方法解决。你能用forwardRef更新我的Child.js代码吗?我是stupid@horgen没有看到你在谈论类:)你能用forwardRef更新我的Child.js代码吗?我是stupid@horgen没有看到您正在谈论的类:)尚未尝试此操作,但这不会返回类节点而不是没有forwardRef的Child的DOM节点吗?我没有得到you@horgen这是一个好问题,如果你知道答案,请告诉我。如果确实像您期望的那样工作,那么下一个问题是为什么我们需要
forwardRef
:)让我知道我们还没有尝试过这个,但是它不会返回类节点而不是没有forwardRef的Child的DOM节点吗?我没有得到you@horgen这是一个好问题,如果你知道答案,请告诉我。如果它的工作方式与您期望的一样,那么下一个问题是为什么我们需要forwardRef
:)请告诉我