reactjs className效果不显示React

pn9klfpd  于 2023-01-04  发布在  React
关注(0)|答案(3)|浏览(193)

我正在使用React缩放平移捏库,并希望给予高度:“100%”的TransformWrapper和TransformComponent,我可以这样做,从 chrome 检查刚刚好,但当试图添加类名或直风格={{高度:“100%"}}它不会显示它,任何想法?
要尝试的代码:https://codesandbox.io/s/withered-violet-uumcx0?file=/src/App.tsx
代码:

import React from "react";
import { makeStyles } from "@material-ui/core";

import "./styles.css";

import { TransformWrapper, TransformComponent } from "react-zoom-pan-pinch";
const useStyles = makeStyles({
  wrapper: {
    height: "100%",
    backgroundColor: "red"
  }
});
export default function App() {
  const classes = useStyles();

  return (
    <div className="App">
      <div className="element">
        <TransformWrapper
          className={classes.wrapper}
          limitToBounds={true}
          alignmentAnimation={{ sizeX: 0, sizeY: 0 }}
          centerZoomedOut={true}
        >
          {({ zoomIn, zoomOut, resetTransform }: any) => (
            <React.Fragment>
              <div style={{ border: "1px solid black", height: "300px" }}>
                <div className="tools">
                  <button onClick={zoomIn}>+</button>
                  <button onClick={zoomOut}>-</button>
                  <button onClick={resetTransform}>x</button>
                </div>
                <TransformComponent>
                  <img
                    width="100%"
                    src="https://cdn.pixabay.com/photo/2015/02/24/15/41/dog-647528__340.jpg"
                    alt="test 2"
                  />
                </TransformComponent>
              </div>
            </React.Fragment>
          )}
        </TransformWrapper>
      </div>
    </div>
  );
}
ghhkc1vu

ghhkc1vu1#

react-zoom-pan-pinch库中的TransformWrapperTransformComponent组件似乎不接受classNamestyle属性。
根据文档,您应该使用wrapperClasswrapperStylecontentClasscontentStyle来表示TransformComponent

iyfamqjs

iyfamqjs2#

我希望这对你有帮助
首先,将makeStyle中的样式添加到TransformComponent中的wrapperClass属性中

<TransformComponent wrapperClass={classes.wrapper}>

在makeStyle中,您可以在组件TransformComponent中导航目标容器,如下所示:

const useStyles = makeStyles({
  wrapper: {
    height: "calc(100% - 21px)", // 21 is the height of tools
    "&> div": {
      height: "100%",
      backgroundColor: "blue !important"
    }
  }
});

以下是codesandbox中的完整代码

mzillmmw

mzillmmw3#

你可以用纯css来做。
将此添加到父div:

style={{
         display: "flex",
         flexDirection: "column",
         border: "1px solid black",
         height: "300px"
       }}

把这两个类转换成css:

.react-transform-wrapper,
.react-transform-component {
  height: 100% !important;
}

它会起作用的。
在此查看CODESANDBOX

    • 已更新**

正如您在the docs中所发现的那样,您可以通过将wrapperClasscontentClass相加来完成此操作,如下所示:

<TransformComponent wrapperClass="full-height" contentClass="full-height">

其中full-height如下所示

.full-height {
  height: 100% !important;
}

相关问题