Le paso 2 valores a un componente hijo:
- Lista de objetos para mostrar
- Eliminar función.
Utilizo una función .map () para mostrar mi lista de objetos (como en el ejemplo dado en la página tutorial de reacción), pero el botón en ese componente activa la onClick
función, en el renderizado (no debe activarse en el tiempo de renderizado). Mi código se ve así:
module.exports = React.createClass({
render: function(){
var taskNodes = this.props.todoTasks.map(function(todo){
return (
<div>
{todo.task}
<button type="submit" onClick={this.props.removeTaskFunction(todo)}>Submit</button>
</div>
);
}, this);
return (
<div className="todo-task-list">
{taskNodes}
</div>
);
}
});
Mi pregunta es: ¿por qué la onClick
función se activa en el render y cómo hacer que no lo haga?
javascript
reactjs
button
onclick
dom-events
Stralos
fuente
fuente
onClick={() => this.props.removeTaskFn(todo)}
En lugar de llamar a la función, vincule el valor a la función:
Referencia de MDN: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind
fuente
El valor de su
onClick
atributo debe ser una función, no una llamada a función.fuente
Para aquellos que no usan funciones de flecha pero algo más simple ... Encontré esto al agregar paréntesis después de mi función signOut ...
reemplazar esto
<a onClick={props.signOut()}>Log Out</a>
con esto
<a onClick={props.signOut}>Log Out</a>
...! 😆fuente
JSX se usa con ReactJS, ya que es muy similar al HTML y les da a los programadores la sensación de usar HTML, mientras que finalmente se transpira en un archivo javascript.
Utilizar -
lo que significa-
fuente
JSX evaluará expresiones de JavaScript en llaves
En este caso,
this.props.removeTaskFunction(todo)
se invoca y el valor de retorno se asigna aonClick
Lo que tienes que proporcionar
onClick
es una función. Para hacer esto, puede ajustar el valor en una función anónima.fuente
Tuve un problema similar, mi código fue:
Donde debería estar
en RenderRadioInput
Me solucionó el problema.
fuente