update react force example componentdidmount component function reactjs render jsx

function - force - render component react



Cómo llamar a una función dentro de un Render en React/Jsx (3)

La solución estaba en la respuesta aceptada. Sin embargo, si alguien quiere saber por qué funcionó y por qué la implementación en la pregunta SO no funcionó,

Primero, las funciones son objetos de primera clase en JavaScript . Eso significa que son tratados como cualquier otra variable. La función puede pasarse como un argumento a otras funciones, puede ser devuelta por otra función y puede asignarse como un valor a una variable. Lea más aquí .

Así que usamos esa variable para invocar la función agregando paréntesis () al final .

Una cosa, si tiene una función que devuelve una función y solo necesita llamar a esa función devuelta, puede tener un paréntesis doble cuando llama a la función externa () ().

Quiero llamar a una función dentro de un html incrustado. He intentado lo siguiente, pero la función no se llama. ¿Sería esta la forma incorrecta de llamar a una función dentro de un método de 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> ); } }


Para llamar a la función tienes que agregar ()

{this.renderIcon()}


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''));

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> <div id="app"></div>

Depende de su necesidad, puede usar this.renderIcon() o bind this.renderIcon.bind(this)

ACTUALIZAR

Así es como llamas a un método fuera del render.

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

La forma recomendada es escribir un componente separado e importarlo.