javascript-如何在React / Jsx中调用渲染器中的函数

我想在一些嵌入式html中调用一个函数。 我尝试了以下操作,但未调用该函数。 这是在render方法中调用函数的错误方法吗?

import React, { Component, PropTypes } from 'react';

export default class PatientTable extends Component {
      constructor(props) {
        super(props);
        this.state = { 
         checking:false
      };
        this.renderIcon = this.renderIcon.bind(this);
  }

  renderIcon(){
    console.log("came here")
    return(
      <div>Function called</div>
    )
  }

  render() {

   return (
       <div className="patient-container">

       {this.renderIcon}      

      </div>
   );
 }
}
lost9123193 asked 2020-02-15T13:32:43Z
3个解决方案
85 votes

要调用该函数,您必须添加()

{this.renderIcon()}   
dknaack answered 2020-02-15T13:32:56Z
12 votes

class App extends React.Component {
  
  buttonClick(){
    console.log("came here")
    
  }
  
  subComponent() {
    return (<div>Hello World</div>);
  }
  
  render() {
    return ( 
      <div className="patient-container">
          <button onClick={this.buttonClick.bind(this)}>Click me</button>
          {this.subComponent()}
       </div>
     )
  }
  


}

ReactDOM.render(<App/>, document.getElementById('app'));
this.renderIcon()

根据您的需要,您可以使用this.renderIcon()或绑定this.renderIcon.bind(this)

更新

这就是您在渲染器外部调用方法的方式。

buttonClick(){
    console.log("came here")
}

render() {
   return (
       <div className="patient-container">
          <button onClick={this.buttonClick.bind(this)}>Click me</button>
       </div>
   );
}

推荐的方法是编写一个单独的组件并将其导入。

Saahithyan Vigneswaran answered 2020-02-15T13:33:38Z
2 votes

解决的方法是接受的答案。 但是,如果有人想知道它为什么起作用以及为什么SO问题中的实现不起作用,

首先,函数是JavaScript中的一流对象。 这意味着它们像其他任何变量一样被对待。 函数可以作为参数传递给其他函数,可以由另一个函数返回,也可以作为值分配给变量。 在这里阅读更多。

因此,我们使用该变量在末尾添加括号()来调用该函数。

一件事,如果您有一个返回函数的函数,而您只需要调用该返回的函数,则在调用外部函数()()时,只需加上双括号即可。

prime answered 2020-02-15T13:34:12Z
translate from https://stackoverflow.com:/questions/40298136/how-to-call-a-function-inside-a-render-in-react-jsx