【发布时间】:2018-09-01 11:04:20
【问题描述】:
长话短说,我正在尝试使用 React 重现此 Codepen。
但是,它需要着陆页的高度(背景中的 gif),我试图获得“我的”,但由于某种原因,我在使用 refs 时遇到了麻烦。
这里是父组件:
export default class Stadium extends React.Component {
constructor(props) {
super(props);
this.state = {
height: '',
}
}
componentDidMount() {
console.log(this.Landing);
}
render() {
const { data, scrollClass } = this.state;
return (
data !== null &&
[
<Header key={"header"} scrollClass={scrollClass} />,
<Landing key={"landing"} heightRef={(elem) => this.Landing = elem}/>,
<Maps key={"maps"} gmapskey={data.g_map_key} />,
<p>Taille du landing: {this.state.height}</p>,
<Footer key={"footer"}/>
]
)
}
}
这是我的子组件:
export default class Landing extends React.Component {
render() {
return (
[
<header id="landing" className="white-text" key={"header"} ref={this.props.Landing}>
<div className="container">
<h1>Opacity on scroll</h1>
<p>The header element fades away.</p>
</div>
</header>,
<div id='nav-bg' key={"bg"} />
]
)
}
}
根据this和this jsfiddle link,我应该可以得到我组件的对象,但是console.log(this.Landing);返回undefined。
我忘记了什么?
提前谢谢你
【问题讨论】:
-
我没听说过
heightRef,不是ref={ elem => this.Landing = elem}。然后你的this.Landing将成为 dom 节点,你可以在其中调用任何你需要的数据来获取数据,比如this.Landing.offsetHeight -
@ArmanCharan ...我在我的问题中链接了这个。
-
this.props.Landing不存在。你想要this.props.heightRef。 -
你是对的,我的元素不一样,但即使你的回复我仍然不确定
标签: javascript reactjs