代码之家  ›  专栏  ›  技术社区  ›  letsCode

一个组件从服务器获取响应并与所有组件共享

  •  0
  • letsCode  · 技术社区  · 6 年前

    我将有一些组成部分,使仪表板。我有一个servercall.js,现在看起来像这样。

    class ServerCall extends Component {
    
      constructor(props) {
          super(props);
          console.log(this.props);
          this.state = {num: "", response: ""};
        }
    
       componentDidMount() {
          const num = window.location.pathname;
          this.setState({ num: num });
       }
    
       componentWillMount() {
         this.setState({response: "put response here."});
       }
    
      render() {
        console.log("servercall props", this.props)
        return (
                <div>
                    <p><br />Path from URL: {this.state.num.substring(1)}</p>
            <p>{this.state.response}</p>
                </div>
        );
      }
    }
    
    export default ServerCall;
    

    这个类将对服务器进行异步调用,响应将是一个相当大的json文件。从这里开始,我想将响应状态支付给我的所有其他组件,这样我就可以使用其中的其他信息。

    话虽如此,我还有另一个正在开发的组件,behavior.js。

    这看起来像这样。。。

    import ServerCall from '../servercall.js';
    
    
    class Behavior extends Component {
    
      constructor(props) {
          super(props);
          this.state = {response: ""}
        }
    
      render() {
        return (
          <div>
          <ServerCall response={this.state.response} />
    
            <div className="container componentBorder">
    
                <div className="row heading">
                    <h5>Behavior Patterns</h5>
                </div>
    
                <div className="row">
                  <div className="scrollableDiv">
                    {this.state.response}
                  </div>
                </div>
    
            </div>
          </div>
        );
      }
    }
    
    export default Behavior;
    

    响应为空。。。我在这里错过了什么或做错了什么?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Sibtain    6 年前

    你不知道国家是怎么运作的。您的问题可以通过使用flux模式来解决,它本质上意味着应用程序的所有状态都驻留在一个地方。与在每个单独的组件中都有状态相比,这有许多优点。你应该读更多关于Redux的书。

        2
  •  0
  •   weibenfalk    6 年前

    你的部件结构看起来有点混乱。理想情况下,您应该有一个组件,用于获取数据。然后在该组件中有一个状态,在该状态中存储获取的数据。从这个组件中,您可以使用props将状态数据发送到其他组件。

    我建议你多读一些关于道具和状态以及它们在React中是如何工作的。