javascript - 如何处理ReactJS中从组件B中的方法调用组件A中的方法的情况

标签 javascript reactjs react-router

我需要将类(class)标签表单 Component #1 传递到 Component #2。我尝试通过调用另一个组件中的方法来实现此目的。但它失败了发生引用错误。如何实现这一目标?

组件#1:

var CourseCard = React.createClass({
  showPapers: function(){
    console.log("Clicked:" + this.props.each_course.label);
    setCourseName(this.props.each_course.label);
    var elem = React.createElement(Papers, {
      course : this.props.each_course.label
    });
  },

  render: function() {
    return(
      <Link to="/papers">
        <div className="course_card" onClick={this.showPapers}>
          <img className="course_img" src={this.props.each_course.image}/>
          <h4>{this.props.each_course.label}</h4>
        </div>
      </Link>
      );
  }
});

组件#2:

const Papers = React.createClass({
  setCourseName: function(course_name){
    console.log("Called setCourseName with name" + course_name);
  },
  render () {
    return (
        <h1>List of all papers</h1>
      )
  }
})

最佳答案

您可以使用refs调用另一个组件的方法。

组件#1

var CourseCard = React.createClass({
  showPapers(){
    console.log("Clicked:" + this.props.each_course.label);
    this.refs.papers.setCourseName(this.props.each_course.label);
  },    
  render() {
    return(
      <Link to="/papers">
        <div className="course_card" onClick={this.showPapers}>
          <img className="course_img" src={this.props.each_course.image}/>
          <h4>{this.props.each_course.label}</h4>
        </div>
      </Link>
      <Papers refs="papers"/>
    );
  }
});

组件#2

const Papers = React.createClass({
  setCourseName(course_name){
    console.log("Called setCourseName with name" + course_name);
  },
  render () {
    return <h1>List of all papers</h1>;
  }
})

但尽量避免,使用 props 而不是直接调用组件的方法。

关于javascript - 如何处理ReactJS中从组件B中的方法调用组件A中的方法的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34719181/

相关文章:

javascript - 谷歌分析站点搜索

javascript - HTML/CSS 语句可以是 Javascript 条件吗?

reactjs - 如何判断用户是否使用 http only cookie 和 JWT 登录 react(客户端)

javascript - 带 URL 参数的 React Router

reactjs - 如何使用 react-router 从哈希 URL 获取参数?

javascript - React Router 重定向哈希链接

javascript - 为什么以下函数在执行 `greet({ name = ' Rauno' } = {} )` instead of ` greet(name = 'Rauno')`?

javascript - 如何将十六进制值的总和转换回十六进制值

reactjs - Ant Design 和 React 测试库

reactjs - React Bootstrap Cards 和 CardDeck 组件 - 响应式布局