Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应-在自定义滚动更改时更新组件类_Javascript_Reactjs - Fatal编程技术网

Javascript 反应-在自定义滚动更改时更新组件类

Javascript 反应-在自定义滚动更改时更新组件类,javascript,reactjs,Javascript,Reactjs,今天,我正在寻找一个React解决方案,以便在两个组件之间进行通信,并在滚动更改时更新TableComponent中的HTML类 滚动组件: export class ScrollComponent { onScrollMove(){ ... } render(){ } ... } export class TableComponent { ... render() { return <div className="

今天,我正在寻找一个React解决方案,以便在两个组件之间进行通信,并在滚动更改时更新TableComponent中的HTML类

滚动组件:

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对象中的任何内容都是可调用的方法