我刚学习React,并想实现以下功能:
A和B都是组件,如果A滚动,则B也会滚动。
以下是我的代码:
<A onScroll="handleScroll"></A>
//what i write now
handleScroll: function(event){
var target = event.nativeEvent.target;
//do something to change scrollTop value
target.scrollTop += 1;
// it looks the same as not use react
document.getElementById(B).scrollTop = target.scrollTop;
}
但实际上我想让我的代码像这样
//what i want
<A scrollTop={this.props.scrollSeed}></A>
<B scrollTop={this.props.scrollSeed}></B>
//...
handleScroll(){
this.setState({scrollSeed: ++this.state.scrollSeed})
}
它类似于 input
<input value="this.props.value"/>
<input value="this.props.value"/>
<input ref='c' onChange={handleChange}>
//...
handleChange: function() {
// enter some code in c and then render in a and b automatically
}
换句话说,我想要一些属性(比如scrollTop
)能够与某个状态绑定,这样我就可以只使用setState
,它们就会自动更新。与<input value={}>
不同,因为<A scrollTop={}>
无法正常工作。
我之前在谷歌上搜索过,但找不到答案。希望我的英语水平不会让你困惑。
ReactDOM.findDOMNode()
,this.refs.elem
就足够了(而且还可以节省 10% 的 CPU 使用率,^_^);在此之前,我只是尝试将我的代码放在componentWillMount
中,但应该是componentDidUpdate
;总之,再次感谢。 - edeitythis.refs
已被弃用。请使用https://reactjs.org/docs/refs-and-the-dom.html#creating-refs。 - Lukas Liesis