如何 select 样式化组件并访问其 属性(例如:offsetHeight)
how to select a styled-component and access its property (ex: offsetHeight)
我正在使用 React 和样式组件。假设我有这个组件:
...
const StyledDiv = styled.div`
width: 100px;
height:100px;
`
export default class MyComponent extends React.component {
render() {
return (
<StyledDiv>Hello World</StyledDiv>
)
}
}
我想 select componentDidMount()
中的这个 div 并访问它的 属性,比如 offsetHeight。
通常情况下,我会使用 document.querySelector().offsetHeight,但我不知道 wright 使用样式组件的方法是什么。
我试过像这样传递一个类名:
...
const StyledDiv = styled.div`
width: 100px;
height:100px;
`
export default class MyComponent extends React.component {
componentDidMount() {
const test = document.querySelector('.testDiv');
console.log(test);
}
render() {
return (
<StyledDiv className="testDiv">Hello World</StyledDiv>
)
}
}
但是我得到的 console.log 输出是 null
。
不过,我可以通过浏览器的控制台获取它...
有什么想法吗?
谢谢。
您可以使用常规 ref
:
class App extends React.Component {
ref = React.createRef();
componentDidMount() {
console.log(this.ref.current.offsetHeight);
}
render() {
return <StyledDiv ref={this.ref}>Hello World</StyledDiv>;
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
我正在使用 React 和样式组件。假设我有这个组件:
...
const StyledDiv = styled.div`
width: 100px;
height:100px;
`
export default class MyComponent extends React.component {
render() {
return (
<StyledDiv>Hello World</StyledDiv>
)
}
}
我想 select componentDidMount()
中的这个 div 并访问它的 属性,比如 offsetHeight。
通常情况下,我会使用 document.querySelector().offsetHeight,但我不知道 wright 使用样式组件的方法是什么。
我试过像这样传递一个类名:
...
const StyledDiv = styled.div`
width: 100px;
height:100px;
`
export default class MyComponent extends React.component {
componentDidMount() {
const test = document.querySelector('.testDiv');
console.log(test);
}
render() {
return (
<StyledDiv className="testDiv">Hello World</StyledDiv>
)
}
}
但是我得到的 console.log 输出是 null
。
不过,我可以通过浏览器的控制台获取它...
有什么想法吗?
谢谢。
您可以使用常规 ref
:
class App extends React.Component {
ref = React.createRef();
componentDidMount() {
console.log(this.ref.current.offsetHeight);
}
render() {
return <StyledDiv ref={this.ref}>Hello World</StyledDiv>;
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);