常量MIN_Y、MAX_Y、BOTTOM_SHEET_HEIGHT是從constants.js這個文件中獲取的,由于我使用的是Next.js,所以得到了一個錯誤,說如果不應用條件的類型就找不到窗口,所以我就這樣寫了。
然而,當我點擊開發者工具中的元素時,它顯示‘height:px’。
// constants.js
export const MIN_Y = 60;
export const MAX_Y = typeof window !== "undefined" && window.innerHeight - 160;
export const BOTTOM_SHEET_HEIGHT =
typeof window !== "undefined" && window.innerHeight - MIN_Y;
// BottomSheet.jsx
import { MIN_Y, BOTTOM_SHEET_HEIGHT } from "../../common/config/constants";
export default function BottomSheet() {
const { sheet, content } = useBottomSheet();
console.log("bottom_sheet_height", BOTTOM_SHEET_HEIGHT);
return (
<Wrapper
ref={sheet}
>
<BottomSheetHeader />
<div ref={content} className="overflow-touch">
<Content />
</div>
</Wrapper>
);
}
const Wrapper = styled(motion.div)`
display: flex;
flex-direction: column;
position: fixed;
z-index: 1;
top: calc(100% - 90px);
left: 0;
right: 0;
border-top-left-radius: 12px;
border-top-right-radius: 12px;
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.6);
width: ${MIN_Y}px;
height: ${BOTTOM_SHEET_HEIGHT && BOTTOM_SHEET_HEIGHT}px; // this
background: linear-gradient(
359.26deg,
#3c41c7 0.02%,
#3742b2 83.23%,
#3642ae 98.76%
);
box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
transition: transform 650ms ease-out;
`;
一開始我寫了' HEIGHT:$ { BOTTOM _ SHEET _ HEIGHT } px ',但是沒用,所以我用了& amp& amp接線員。
但結果是一樣的。
我把MIN_Y放在width,但是MIN_Y正常出來。
我檢查了它是否在我加載常量時就未定義,但在console.log中它并未定義。
希望身高有正確的數值。而不是“高度:像素”