Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取刚刚在React.js中呈现的组件的DOM元素?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何获取刚刚在React.js中呈现的组件的DOM元素?

Javascript 如何获取刚刚在React.js中呈现的组件的DOM元素?,javascript,reactjs,Javascript,Reactjs,我有一个类,我在其中呈现一个模态,如下所示: import Modal from 'Modal'; export default class SomeClass extends Component { constructor(props) { super(props); this.state = { modal: null } } render() { return ( <Modal

我有一个类,我在其中呈现一个模态,如下所示:

import Modal from 'Modal';

export default class SomeClass extends Component {

  constructor(props) {
    super(props);

    this.state = {
       modal: null
    }

    
  }

  render() {
    return (
     
        <Modal />

    );
  }
}
并保存它的状态,但我不想使用
getElementById
。。。我宁愿直接引用它。我该如何反应呢

如果我不应该使用裁判,为什么裁判会存在

从官方文档中,它提到了REF的几个好用例:

  • 管理焦点、文本选择或媒体播放
  • 触发命令式动画
  • 与第三方DOM库集成
  • 但是我们不应该过度使用refs,因为它只是一种命令式方法,React.js用于那些不能用声明式方法完成的情况。 在大多数情况下,坚持使用典型的数据流是很好的,我们应该避免以命令式的方式直接与DOM元素交谈

    要在React中使用引导模式,这对我来说总是很好的,无论是在模式组件内部还是从父组件中,它都非常易于使用和管理状态

    此外,我们应该尽量避免使用必要的show()hide()函数,而不是像前面明确提到的那样使用道具

    但是如果你想坚持目前的方法

    useRefs是摆脱getElementById的方法。尝试获取子组件中元素的引用时,可以使用forwardRefAPI

    如果我不应该使用裁判,为什么裁判会存在

    从官方文档中,它提到了REF的几个好用例:

  • 管理焦点、文本选择或媒体播放
  • 触发命令式动画
  • 与第三方DOM库集成
  • 但是我们不应该过度使用refs,因为它只是一种命令式方法,React.js用于那些不能用声明式方法完成的情况。 在大多数情况下,坚持使用典型的数据流是很好的,我们应该避免以命令式的方式直接与DOM元素交谈

    要在React中使用引导模式,这对我来说总是很好的,无论是在模式组件内部还是从父组件中,它都非常易于使用和管理状态

    此外,我们应该尽量避免使用必要的show()hide()函数,而不是像前面明确提到的那样使用道具

    但是如果你想坚持目前的方法


    useRefs是摆脱getElementById的方法。尝试获取子组件中元素的引用时,可以使用forwardRefAPI

    答案是裁判,但你不应该这样做。React不是vanilla JS的包装器,您应该使用它:此页面使用Bootstrap 4(我使用Bootstrap 5),并使用同一组件的挂钩显示/隐藏模态。我试图将模态抽象为它自己的组件,并向父组件显示/隐藏它。如果我不应该使用REF,为什么会存在REF?这并不是说你“不应该”使用REF,但是如果你发现自己使用了大量的REF和其他DOM操作,那你就错了。它们不应该这么随意地使用。
    我不明白如何在没有引用的情况下操纵孩子的状态。
    你要做的是在家长中使用一个状态并将其作为道具传递。@MattU只是为了清楚,我从来没有说过“不应该”使用refs。他们显然有目的。在这里的特定情况下,它们是不必要的。答案是refs,但你不应该这样做。React不是vanilla JS的包装器,您应该使用它:此页面使用Bootstrap 4(我使用Bootstrap 5),并使用同一组件的挂钩显示/隐藏模态。我试图将模态抽象为它自己的组件,并向父组件显示/隐藏它。如果我不应该使用REF,为什么会存在REF?这并不是说你“不应该”使用REF,但是如果你发现自己使用了大量的REF和其他DOM操作,那你就错了。它们不应该这么随意地使用。
    我不明白如何在没有引用的情况下操纵孩子的状态。
    你要做的是在家长中使用一个状态并将其作为道具传递。@MattU只是为了清楚,我从来没有说过“不应该”使用refs。他们显然有目的。在这种特殊情况下,它们是不必要的。那么,您将如何使用React引导更改孩子的可见性?我不明白如何在没有引用的情况下操纵孩子的状态。这就是他们显示/隐藏模态的方式,所以你可以使用
    useState
    来更改模态的状态。如果需要更改子组件中定义的模态的可见性,可以在父组件中定义状态,并将
    状态
    值和
    设置状态
    函数传递给子组件,以便子组件中的模态可以获得更改其自身状态的引用。然后,您将如何使用React引导更改孩子的可见性?我不明白如何在没有引用的情况下操纵孩子的状态。这就是他们显示/隐藏模态的方式,所以你可以使用
    useState
    来更改模态的状态。如果需要更改子组件中定义的模态的可见性,可以在父组件中定义状态,并将
    状态
    值和
    设置状态
    函数传递给子组件,以便子组件中的模态可以获得更改其自身状态的引用。
    var myModal = new bootstrap.Modal(document.getElementById('myModal'), options)