我如何在反应中获得 querySelectorAll html 元素?

how i get querySelectorAll html elements in react?

我正在使用与功能组件的反应。我也使用 react-bootstrap ,我附加了 react-bootstrap 轮播,react-bootstrap 一切都很好,对于某些功能,我想在 react 中获得三个 div,div 有相同 类。我知道如果我使用简单的 html css js 那么我很容易做到,

querySelectorAll(".indicator-btn")

但我想要这个反应。我怎样才能做到这一点?请给我建议一个最佳实践。

这是我的组件,最后我有三个我想要的 div Dom。

import React, { useState } from "react";
import Cardcarousel from "./Cardcarousel";
import { Carousel } from "react-bootstrap";
import Brand1img from "../images/brand1.png";
import Airbnbimg from "../images/Airbnb.png";
import Microsoft from "../images/microsoft.png";
import { Row, Col } from "react-bootstrap";

function Carouselx() {
  const [index, setIndex] = useState(0);

  const handleSelect = (selectedIndex, e) => {
    console.log(selectedIndex, "e=>", e);
    setIndex(selectedIndex);
  };

  const isSlide = (slide) => {
    console.log("slide no => " + slide);
    console.log(this);
  };

  return (
    <>
      <div className="px-5 py-3">
        <Carousel activeIndex={index} onSelect={handleSelect} onSlide={isSlide}>
          <Carousel.Item>
            <Row>
              <Col>
                <Cardcarousel
                  name="Technology UI/UX"
                  companylogo={Brand1img}
                  type="Full time job"
                />
              </Col>
              <Col>
                <Cardcarousel
                  name="Technology Backend developer"
                  companylogo={Airbnbimg}
                  type="Part time job"
                />
              </Col>
              <Col>
                <Cardcarousel
                  name="Technology Backend developer"
                  companylogo={Microsoft}
                  type="Internee"
                />
              </Col>
            </Row>
          </Carousel.Item>
          <Carousel.Item>
            <Row>
              <Col>
                <Cardcarousel
                  name="Technology UI/UX"
                  companylogo={Brand1img}
                  type="Full time job"
                />
              </Col>
              <Col>
                <Cardcarousel
                  name="Technology Backend developer"
                  companylogo={Airbnbimg}
                  type="Part time job"
                />
              </Col>
              <Col>
                <Cardcarousel
                  name="Technology front end developer"
                  companylogo={Microsoft}
                  type="Internee"
                />
              </Col>
            </Row>
          </Carousel.Item>
        </Carousel>
        <div className="carusel-indecator-container">
          <div className="indicator-btn indicator-btn1"></div>
          <div className="indicator-btn indicator-btn2"></div>
          <div className="indicator-btn indicator-btn3"></div>
        </div>
      </div>
    </>
  );
}

export default Carouselx;

您可以使用 useState 来获取它的引用(也 useRef 但可能会有更多的不便)。

const [btn1, setBtn1] = useState();
const [btn2, setBtn2] = useState();
const [btn3, setBtn3] = useState();

...

<div ref={setBtn1} className="indicator-btn indicator-btn1"></div>
<div ref={setBtn2} className="indicator-btn indicator-btn2"></div>
<div ref={setBtn3} className="indicator-btn indicator-btn3"></div>

在某些时候(第一次渲染后)您将拥有 btn1、btn2、btn3 作为按钮元素。如果你想使用它,假设是命令式的,你可以使用 Effect

useEffect(() => {
  if (!btn1 || !btn2 || !btn3) return;
  // do something with these refs i.e. make them jquery! $(btn1)
}, [btn1, btn2, btn3]);