Javascript 反应-在自定义滚动更改时更新组件类
今天,我正在寻找一个React解决方案,以便在两个组件之间进行通信,并在滚动更改时更新TableComponent中的HTML类 滚动组件:Javascript 反应-在自定义滚动更改时更新组件类,javascript,reactjs,Javascript,Reactjs,今天,我正在寻找一个React解决方案,以便在两个组件之间进行通信,并在滚动更改时更新TableComponent中的HTML类 滚动组件: export class ScrollComponent { onScrollMove(){ ... } render(){ } ... } export class TableComponent { ... render() { return <div className="
export class ScrollComponent {
onScrollMove(){
...
}
render(){
}
...
}
export class TableComponent {
...
render() {
return <div className="table">...</div><ScrollComponent/>
// ScrollComponent is a child here to move table content
}
}
表组件:
export class ScrollComponent {
onScrollMove(){
...
}
render(){
}
...
}
export class TableComponent {
...
render() {
return <div className="table">...</div><ScrollComponent/>
// ScrollComponent is a child here to move table content
}
}
导出类TableComponent{
...
render(){
返回。。。
//ScrollComponent是此处用于移动表内容的子组件
}
}
我的问题是,我应该使用什么来检查TableComponent内部的ScrollComponent是否改变了它的位置,同时将table类添加到类似table scroll moved的内容中
解决这个问题的解决方案、概念和想法是什么?您的问题不太清楚,但是我会根据您提供的信息尽力帮助您。实现您的要求的一种方法是通过孩子的道具将一个方法从TableComponent传递到ScrollComponent。这可能看起来像:
export class TableComponent {
...
scrollPositionHasChanged = () => {
// do something
}
render() {
return (
<div className="table">...</div>
<ScrollComponent
scrollPositionHasChanged={ this.scrollPositionHasChanged }
/>
}
}
<ScrollComponent
actions={{ onChange: this.scrollPositionHasChanged }}
/>
但是,为了可读性,我喜欢将我的所有“操作”发送到单个对象中。这是不必要的,但当您向子组件传递大量道具时,它有助于保持整洁。比如:
export class TableComponent {
...
scrollPositionHasChanged = () => {
// do something
}
render() {
return (
<div className="table">...</div>
<ScrollComponent
scrollPositionHasChanged={ this.scrollPositionHasChanged }
/>
}
}
<ScrollComponent
actions={{ onChange: this.scrollPositionHasChanged }}
/>
然后在ScrollComponent中调用this.props.actions.onChange。键入的时间更长,但说明actions对象中的任何内容都是可调用的方法。您的问题不太清楚,但是我将根据您提供的信息尽力帮助您。实现您的要求的一种方法是通过孩子的道具将一个方法从TableComponent传递到ScrollComponent。这可能看起来像:
export class TableComponent {
...
scrollPositionHasChanged = () => {
// do something
}
render() {
return (
<div className="table">...</div>
<ScrollComponent
scrollPositionHasChanged={ this.scrollPositionHasChanged }
/>
}
}
<ScrollComponent
actions={{ onChange: this.scrollPositionHasChanged }}
/>
但是,为了可读性,我喜欢将我的所有“操作”发送到单个对象中。这是不必要的,但当您向子组件传递大量道具时,它有助于保持整洁。比如:
export class TableComponent {
...
scrollPositionHasChanged = () => {
// do something
}
render() {
return (
<div className="table">...</div>
<ScrollComponent
scrollPositionHasChanged={ this.scrollPositionHasChanged }
/>
}
}
<ScrollComponent
actions={{ onChange: this.scrollPositionHasChanged }}
/>
然后在ScrollComponent中调用this.props.actions.onChange。键入的时间更长,但说明actions对象中的任何内容都是可调用的方法