javascript - 如何在 react 中将组件引用传递给路由组件

标签 javascript html css reactjs redux

在 react 中,我想将组件的引用传递给路由组件。但是当我路由到诸如“/”之类的路径时,它会重新渲染传递的组件,因此再次从 0 开始。 这是工作示例的链接 https://codesandbox.io/s/884yror0p2 这是一个代码,每当我从 Home 路由时-->About about 计数器从 0 开始。

import React from "react";
import ReactDOM from "react-dom";
import { BrowserRouter as Router, Route, Link } from "react-router-dom";

class Dummy extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      c: 0
    };
    setInterval(() => {
      this.setState({ c: this.state.c + 1 });
    }, 1000);
  }

  render() {
    return <h1> Counter {this.state.c}</h1>;
  }
}

class BasicExample extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      // com: <Dummy /> this technique also not work
    };
  }
  render() {
    let com = <Dummy />;
    return (
      <div>
        <Router>
          <div>
            {com}
            <ul>
              <li>
                <Link to="/">Home</Link>
              </li>
              <li>
                <Link to="/about">About</Link>
              </li>
            </ul>

            <hr />
            <Route
              exact
              path="/"
              // render={() => <Home com={com} />} //this also not work
              component={props => <Home {...props} com={com} />}
            />
            <Route path="/about"
              component={props => <About {...props} com={com} />}             
             />
          </div>
        </Router>
      </div>
    );
  }
}

class Home extends React.Component {
  render() {
    return (
      <div>
        {this.props.com}
        <h2>Home </h2>
      </div>
    );
  }
}

class About extends React.Component {
  constructor(props) {
    super(props);
    console.log(this.props);
  }
  render() {
    return (
      <div>
        {this.props.com}
        <h2>About</h2>
      </div>
    );
  }
}

ReactDOM.render(<BasicExample />, document.getElementById("root"));

最佳答案

您不能通过“引用”传递组件。但是,如果您希望在所有组件之间拥有相同的数据,您可以在父组件 (BasicExample) 中初始化您的状态并将其向下传递或使用像 Redux 这样的状态容器。

关于javascript - 如何在 react 中将组件引用传递给路由组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49584866/

相关文章:

javascript - 为什么 Pod 依赖管理器没有检测到安装所需的模块?

javascript - 嵌套函数解释

javascript - 提醒 this.id 关键字返回未定义的 Javascript

html - Bootstrap : Right align vertical pills

javascript - AngularUI 路由器在解析时不重定向

javascript - 使用 .css 移动对象后,重置所有可放置对象以允许可拖动对象

javascript - 执行一个函数?仅适用于调整大小

javascript - 在 JS 中 if (condition) 表示 == true 或 === true

javascript - rails : Running Javascript only after CSS loaded

javascript - 如何在此现有循环中添加额外循环