{"id":1597,"date":"2020-08-16T18:25:58","date_gmt":"2020-08-17T00:25:58","guid":{"rendered":"https:\/\/www.jacobsoft.com.mx\/?p=1597"},"modified":"2025-02-20T13:37:48","modified_gmt":"2025-02-20T19:37:48","slug":"manejo-de-formularios-en-react-js","status":"publish","type":"post","link":"https:\/\/www.jacobsoft.com.mx\/es_mx\/manejo-de-formularios-en-react-js\/","title":{"rendered":"Manejo de Formularios en React.JS"},"content":{"rendered":"\n<p>En este video veremos como crear un <strong>formulario <\/strong>utilizando <strong>React.js<\/strong>, como asociar cada uno de los campos a las <strong>variables de estado<\/strong> y establecer su valor con el evento <strong>onChange<\/strong>, que nos permitir\u00e1 validar la informaci\u00f3n capturada en los campos del formulario.<\/p>\n\n\n\n<p>Al crear un formulario con la etiqueta &lt;form&gt; la acci\u00f3n del formulario se establece con el evento onSubmit, el cual invocar\u00e1 una funci\u00f3n que se encargar\u00e1 de realizar la validaci\u00f3n de los campos y realizar las acciones correspondientes al objetivo del formulario:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;form onSubmit={this.onsubmit} &gt;\n&lt;\/form&gt;<\/code><\/pre>\n\n\n\n<p>En el ejemplo anterior, el formulario invoca la funci\u00f3n o m\u00e9todo onsubmit. Si ahora consideramos un s\u00f3lo campo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;form onSubmit={this.onsumbit}&gt;\n  &lt;input type=\"text\" name=\"nombre\" value={this.state.nombre} onChange={this.handleChange} \/&gt;\n  &lt;input type=\"submit\" name=\"submit\" value=\"Enviar\" \/&gt;\n&lt;\/form&gt;<\/code><\/pre>\n\n\n\n<p>Como se observa en el ejemplo anterior, el campo es un input de tipo text cuyo nombre o name es nombre. Lo importante en los formularios con React es utilizar los atributos value y el evento onChange.<\/p>\n\n\n\n<p>El atributo value est\u00e1 asignado a una variable de estado con el nombre: nombre y el evento onChange a una funci\u00f3n o m\u00e9todo que hemos llamado handleChange. Este m\u00e9todo o funci\u00f3n deber\u00e1 actualizar la variable de estado cada vez que el usuario escribe un caracter o pulsa una tecla en el teclado. Es decir, cada vez que ocurre esta acci\u00f3n se invocar\u00e1 el metodo handleChange y este deber\u00e1 enviar el dato capturado en el campo a la variable de estado.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>handleChange(event) {\n   \/\/Obtenemos el valor capturado en el campo y lo guardamos en una variable valor\n   const valor = event.target.value;\n   \/\/Mandamos el valor a la variable de estado llamada nombre\n   this.setState({nombre: valor});\n}<\/code><\/pre>\n\n\n\n<p>En la implementaci\u00f3n anterior, del m\u00e9todo handleChange, obtenermos el valor capturado en el campo y lo mandamos a la variable de estado, la cual est\u00e1 asignada al atributo value del campo en el formulario. Por lo tanto el valor capturado se guarda en la variable de estado y se muestra en el campo.<\/p>\n\n\n\n<p>Cuando el usuario oprima el bot\u00f3n Enviar, se invocar\u00e1 la funci\u00f3n onsumbit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>onsubmit(event){\n   event.stopPropagation();\n   event.preventDefault();\n   \/\/El valor capturado lo obtenemos de la variable de estado\n   const datos = this.state.nombre;\n   \/\/ En la variable datos guardamos el valor capturado en el campo del formulario\n}<\/code><\/pre>\n\n\n\n<div style=\"height:23px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-2380084220870127\"\n     crossorigin=\"anonymous\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2380084220870127\"\n     data-ad-slot=\"2437322509\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p><\/p>\n\n\n\n<p>Cada uno de los campos se asocia a una variable de estado utilizando el atributo value del campo o input y adem\u00e1s se agrega el evento onChange asoci\u00e1ndolo a una funci\u00f3n en la clase.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Manejo de Formularios con React.JS\" width=\"780\" height=\"439\" src=\"https:\/\/www.youtube.com\/embed\/QprMh3YNYWA?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><figcaption>Tambi\u00e9n podr\u00edas suscribirte al canal en <a href=\"https:\/\/www.youtube.com\/channel\/UCHQDZW3R0NqPyAE3kOccOAw\" target=\"_blank\" rel=\"noreferrer noopener\">Youtube<\/a><\/figcaption><\/figure>\n\n\n\n<div style=\"height:26px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div style=\"height:27px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Este es el c\u00f3digo generado en el tutorial:<\/p>\n\n\n<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n<html><body><div id=\"gist104887965\" class=\"gist\">\n    <div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n      <div class=\"gist-data\">\n        \n<div class=\"js-gist-file-update-container js-task-list-container\">\n      <div id=\"file-app-js\" class=\"file my-2\">\n    \n    <div itemprop=\"text\" class=\"Box-body p-0 blob-wrapper data type-javascript  \" style=\"overflow: auto\" tabindex=\"0\" role=\"region\" aria-label=\"App.js content, created by JacobAvila on 12:22AM on August 17, 2020.\">\n\n        \n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n\n  <template class=\"js-file-alert-template\">\n  <div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n    <span>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.\n      <a class=\"Link--inTextBlock\" href=\"https:\/\/github.co\/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a>\n    <\/span>\n\n\n  <div data-view-component=\"true\" class=\"flash-action\">        <a href=\"%7B%7B%20revealButtonHref%20%7D%7D\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters\n<\/a>\n<\/div>\n<\/div><\/template>\n<template class=\"js-line-alert-template\">\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\">\n    <svg aria-hidden=\"true\" height=\"16\" viewbox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n<\/span><\/template>\n\n  <table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"App.js\">\n        <tr class=\"line\">\n          <td id=\"file-app-js-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n          <td id=\"file-app-js-LC1\" class=\"blob-code blob-code-inner js-file-line\">import React, {Component} from 'react';<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n          <td id=\"file-app-js-LC2\" class=\"blob-code blob-code-inner js-file-line\">import {Row, Col, Form, Input, Label, FormGroup, Button, FormFeedback} from 'reactstrap';<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n          <td id=\"file-app-js-LC3\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n          <td id=\"file-app-js-LC4\" class=\"blob-code blob-code-inner js-file-line\">class App extends Component {<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n          <td id=\"file-app-js-LC5\" class=\"blob-code blob-code-inner js-file-line\">  constructor(props){<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L6\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"6\"><\/td>\n          <td id=\"file-app-js-LC6\" class=\"blob-code blob-code-inner js-file-line\">    super(props);<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L7\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"7\"><\/td>\n          <td id=\"file-app-js-LC7\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L8\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"8\"><\/td>\n          <td id=\"file-app-js-LC8\" class=\"blob-code blob-code-inner js-file-line\">    this.state = {<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L9\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"9\"><\/td>\n          <td id=\"file-app-js-LC9\" class=\"blob-code blob-code-inner js-file-line\">      nombre: '',<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L10\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"10\"><\/td>\n          <td id=\"file-app-js-LC10\" class=\"blob-code blob-code-inner js-file-line\">      correo: '',<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L11\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"11\"><\/td>\n          <td id=\"file-app-js-LC11\" class=\"blob-code blob-code-inner js-file-line\">      edad: '',<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L12\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"12\"><\/td>\n          <td id=\"file-app-js-LC12\" class=\"blob-code blob-code-inner js-file-line\">      mensajeNombre: '',<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L13\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"13\"><\/td>\n          <td id=\"file-app-js-LC13\" class=\"blob-code blob-code-inner js-file-line\">      mensajeCorreo: '',<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L14\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"14\"><\/td>\n          <td id=\"file-app-js-LC14\" class=\"blob-code blob-code-inner js-file-line\">      mensajeEdad: '',<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L15\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"15\"><\/td>\n          <td id=\"file-app-js-LC15\" class=\"blob-code blob-code-inner js-file-line\">      invalidNombre: false,<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L16\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"16\"><\/td>\n          <td id=\"file-app-js-LC16\" class=\"blob-code blob-code-inner js-file-line\">      invalidCorreo: false,<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L17\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"17\"><\/td>\n          <td id=\"file-app-js-LC17\" class=\"blob-code blob-code-inner js-file-line\">      invalidEdad: false,<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L18\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"18\"><\/td>\n          <td id=\"file-app-js-LC18\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L19\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"19\"><\/td>\n          <td id=\"file-app-js-LC19\" class=\"blob-code blob-code-inner js-file-line\">    this.onChange = this.onChange.bind(this);<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L20\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"20\"><\/td>\n          <td id=\"file-app-js-LC20\" class=\"blob-code blob-code-inner js-file-line\">    this.enviarAlaBD = this.enviarAlaBD.bind(this);<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L21\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"21\"><\/td>\n          <td id=\"file-app-js-LC21\" class=\"blob-code blob-code-inner js-file-line\">  }<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L22\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"22\"><\/td>\n          <td id=\"file-app-js-LC22\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L23\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"23\"><\/td>\n          <td id=\"file-app-js-LC23\" class=\"blob-code blob-code-inner js-file-line\">  onChange = e =&gt;{<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L24\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"24\"><\/td>\n          <td id=\"file-app-js-LC24\" class=\"blob-code blob-code-inner js-file-line\">    const {name, value} = e.target;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L25\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"25\"><\/td>\n          <td id=\"file-app-js-LC25\" class=\"blob-code blob-code-inner js-file-line\">    this.setState({<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L26\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"26\"><\/td>\n          <td id=\"file-app-js-LC26\" class=\"blob-code blob-code-inner js-file-line\">      [name]: value,<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L27\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"27\"><\/td>\n          <td id=\"file-app-js-LC27\" class=\"blob-code blob-code-inner js-file-line\">    });<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L28\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"28\"><\/td>\n          <td id=\"file-app-js-LC28\" class=\"blob-code blob-code-inner js-file-line\">  }<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L29\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"29\"><\/td>\n          <td id=\"file-app-js-LC29\" class=\"blob-code blob-code-inner js-file-line\">  enviarAlaBD = e  =&gt; {<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L30\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"30\"><\/td>\n          <td id=\"file-app-js-LC30\" class=\"blob-code blob-code-inner js-file-line\">    e.preventDefault();<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L31\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"31\"><\/td>\n          <td id=\"file-app-js-LC31\" class=\"blob-code blob-code-inner js-file-line\">    let valido = true;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L32\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"32\"><\/td>\n          <td id=\"file-app-js-LC32\" class=\"blob-code blob-code-inner js-file-line\">    if(this.state.nombre === ''){<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L33\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"33\"><\/td>\n          <td id=\"file-app-js-LC33\" class=\"blob-code blob-code-inner js-file-line\">      this.setState({<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L34\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"34\"><\/td>\n          <td id=\"file-app-js-LC34\" class=\"blob-code blob-code-inner js-file-line\">        invalidNombre: true,<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L35\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"35\"><\/td>\n          <td id=\"file-app-js-LC35\" class=\"blob-code blob-code-inner js-file-line\">        mensajeNombre: 'El campo nombre es obligatorio, indica tu nombre',<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L36\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"36\"><\/td>\n          <td id=\"file-app-js-LC36\" class=\"blob-code blob-code-inner js-file-line\">      });<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L37\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"37\"><\/td>\n          <td id=\"file-app-js-LC37\" class=\"blob-code blob-code-inner js-file-line\">      valido = false;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L38\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"38\"><\/td>\n          <td id=\"file-app-js-LC38\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L39\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"39\"><\/td>\n          <td id=\"file-app-js-LC39\" class=\"blob-code blob-code-inner js-file-line\">    if(this.state.correo === ''){<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L40\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"40\"><\/td>\n          <td id=\"file-app-js-LC40\" class=\"blob-code blob-code-inner js-file-line\">      this.setState({<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L41\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"41\"><\/td>\n          <td id=\"file-app-js-LC41\" class=\"blob-code blob-code-inner js-file-line\">        invalidCorreo: true,<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L42\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"42\"><\/td>\n          <td id=\"file-app-js-LC42\" class=\"blob-code blob-code-inner js-file-line\">        mensajeCorreo: 'Indica tu direcci&Atilde;&sup3;n de correo',<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L43\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"43\"><\/td>\n          <td id=\"file-app-js-LC43\" class=\"blob-code blob-code-inner js-file-line\">      });<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L44\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"44\"><\/td>\n          <td id=\"file-app-js-LC44\" class=\"blob-code blob-code-inner js-file-line\">      valido = false;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L45\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"45\"><\/td>\n          <td id=\"file-app-js-LC45\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L46\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"46\"><\/td>\n          <td id=\"file-app-js-LC46\" class=\"blob-code blob-code-inner js-file-line\">    if(this.state.edad === ''){<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L47\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"47\"><\/td>\n          <td id=\"file-app-js-LC47\" class=\"blob-code blob-code-inner js-file-line\">      this.setState({<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L48\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"48\"><\/td>\n          <td id=\"file-app-js-LC48\" class=\"blob-code blob-code-inner js-file-line\">        invalidEdad: true,<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L49\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"49\"><\/td>\n          <td id=\"file-app-js-LC49\" class=\"blob-code blob-code-inner js-file-line\">        mensajeEdad: 'Indica tu edad',<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L50\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"50\"><\/td>\n          <td id=\"file-app-js-LC50\" class=\"blob-code blob-code-inner js-file-line\">      });<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L51\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"51\"><\/td>\n          <td id=\"file-app-js-LC51\" class=\"blob-code blob-code-inner js-file-line\">      valido = false;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L52\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"52\"><\/td>\n          <td id=\"file-app-js-LC52\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L53\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"53\"><\/td>\n          <td id=\"file-app-js-LC53\" class=\"blob-code blob-code-inner js-file-line\">    if(valido){<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L54\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"54\"><\/td>\n          <td id=\"file-app-js-LC54\" class=\"blob-code blob-code-inner js-file-line\">      \/\/Enviarlo a la base de datos o a otro componente<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L55\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"55\"><\/td>\n          <td id=\"file-app-js-LC55\" class=\"blob-code blob-code-inner js-file-line\">      console.log(\"Se envian los datos \" + JSON.stringify(this.state));<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L56\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"56\"><\/td>\n          <td id=\"file-app-js-LC56\" class=\"blob-code blob-code-inner js-file-line\">    }<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L57\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"57\"><\/td>\n          <td id=\"file-app-js-LC57\" class=\"blob-code blob-code-inner js-file-line\">  }<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L58\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"58\"><\/td>\n          <td id=\"file-app-js-LC58\" class=\"blob-code blob-code-inner js-file-line\">  render(){<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L59\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"59\"><\/td>\n          <td id=\"file-app-js-LC59\" class=\"blob-code blob-code-inner js-file-line\">    return (<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L60\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"60\"><\/td>\n          <td id=\"file-app-js-LC60\" class=\"blob-code blob-code-inner js-file-line\">      &lt;div&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L61\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"61\"><\/td>\n          <td id=\"file-app-js-LC61\" class=\"blob-code blob-code-inner js-file-line\">        &lt;Row&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L62\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"62\"><\/td>\n          <td id=\"file-app-js-LC62\" class=\"blob-code blob-code-inner js-file-line\">          &lt;Col xs=\"3\"&gt;&lt;\/Col&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L63\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"63\"><\/td>\n          <td id=\"file-app-js-LC63\" class=\"blob-code blob-code-inner js-file-line\">          &lt;Col xs=\"6\"&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L64\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"64\"><\/td>\n          <td id=\"file-app-js-LC64\" class=\"blob-code blob-code-inner js-file-line\">            &lt;h2&gt;Registro de Participantes&lt;\/h2&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L65\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"65\"><\/td>\n          <td id=\"file-app-js-LC65\" class=\"blob-code blob-code-inner js-file-line\">            &lt;Form onSubmit={this.enviarAlaBD}&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L66\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"66\"><\/td>\n          <td id=\"file-app-js-LC66\" class=\"blob-code blob-code-inner js-file-line\">              &lt;FormGroup&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L67\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"67\"><\/td>\n          <td id=\"file-app-js-LC67\" class=\"blob-code blob-code-inner js-file-line\">                &lt;Label&gt;Nombre&lt;\/Label&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L68\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"68\"><\/td>\n          <td id=\"file-app-js-LC68\" class=\"blob-code blob-code-inner js-file-line\">                &lt;Input type=\"text\" name=\"nombre\" value={this.state.nombre} onChange={this.onChange} invalid={this.state.invalidNombre} \/&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L69\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"69\"><\/td>\n          <td id=\"file-app-js-LC69\" class=\"blob-code blob-code-inner js-file-line\">                &lt;FormFeedback&gt;{this.state.mensajeNombre}&lt;\/FormFeedback&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L70\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"70\"><\/td>\n          <td id=\"file-app-js-LC70\" class=\"blob-code blob-code-inner js-file-line\">              &lt;\/FormGroup&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L71\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"71\"><\/td>\n          <td id=\"file-app-js-LC71\" class=\"blob-code blob-code-inner js-file-line\">              &lt;FormGroup&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L72\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"72\"><\/td>\n          <td id=\"file-app-js-LC72\" class=\"blob-code blob-code-inner js-file-line\">                &lt;Label&gt;Correo&lt;\/Label&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L73\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"73\"><\/td>\n          <td id=\"file-app-js-LC73\" class=\"blob-code blob-code-inner js-file-line\">                &lt;Input type=\"email\" name=\"correo\" value={this.state.correo} onChange={this.onChange} invalid={this.state.invalidCorreo}\/&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L74\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"74\"><\/td>\n          <td id=\"file-app-js-LC74\" class=\"blob-code blob-code-inner js-file-line\">                &lt;FormFeedback&gt;{this.state.mensajeCorreo}&lt;\/FormFeedback&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L75\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"75\"><\/td>\n          <td id=\"file-app-js-LC75\" class=\"blob-code blob-code-inner js-file-line\">              &lt;\/FormGroup&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L76\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"76\"><\/td>\n          <td id=\"file-app-js-LC76\" class=\"blob-code blob-code-inner js-file-line\">              &lt;FormGroup&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L77\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"77\"><\/td>\n          <td id=\"file-app-js-LC77\" class=\"blob-code blob-code-inner js-file-line\">                &lt;Label&gt;Edad&lt;\/Label&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L78\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"78\"><\/td>\n          <td id=\"file-app-js-LC78\" class=\"blob-code blob-code-inner js-file-line\">                &lt;Input type=\"text\" name=\"edad\" className=\"col-2\" value={this.state.edad} onChange={this.onChange} invalid={this.state.invalidEdad} \/&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L79\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"79\"><\/td>\n          <td id=\"file-app-js-LC79\" class=\"blob-code blob-code-inner js-file-line\">                &lt;FormFeedback&gt;{this.state.mensajeEdad}&lt;\/FormFeedback&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L80\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"80\"><\/td>\n          <td id=\"file-app-js-LC80\" class=\"blob-code blob-code-inner js-file-line\">              &lt;\/FormGroup&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L81\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"81\"><\/td>\n          <td id=\"file-app-js-LC81\" class=\"blob-code blob-code-inner js-file-line\">              &lt;FormGroup&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L82\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"82\"><\/td>\n          <td id=\"file-app-js-LC82\" class=\"blob-code blob-code-inner js-file-line\">                &lt;Button color=\"success\"&gt;Guardar&lt;\/Button&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L83\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"83\"><\/td>\n          <td id=\"file-app-js-LC83\" class=\"blob-code blob-code-inner js-file-line\">              &lt;\/FormGroup&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L84\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"84\"><\/td>\n          <td id=\"file-app-js-LC84\" class=\"blob-code blob-code-inner js-file-line\">            &lt;\/Form&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L85\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"85\"><\/td>\n          <td id=\"file-app-js-LC85\" class=\"blob-code blob-code-inner js-file-line\">          &lt;\/Col&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L86\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"86\"><\/td>\n          <td id=\"file-app-js-LC86\" class=\"blob-code blob-code-inner js-file-line\">        &lt;\/Row&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L87\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"87\"><\/td>\n          <td id=\"file-app-js-LC87\" class=\"blob-code blob-code-inner js-file-line\">      &lt;\/div&gt;<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L88\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"88\"><\/td>\n          <td id=\"file-app-js-LC88\" class=\"blob-code blob-code-inner js-file-line\">    );<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L89\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"89\"><\/td>\n          <td id=\"file-app-js-LC89\" class=\"blob-code blob-code-inner js-file-line\">  }<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L90\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"90\"><\/td>\n          <td id=\"file-app-js-LC90\" class=\"blob-code blob-code-inner js-file-line\">}<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L91\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"91\"><\/td>\n          <td id=\"file-app-js-LC91\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n        <\/tr>\n        <tr class=\"line\">\n          <td id=\"file-app-js-L92\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"92\"><\/td>\n          <td id=\"file-app-js-LC92\" class=\"blob-code blob-code-inner js-file-line\">export default App;<\/td>\n        <\/tr>\n  <\/table>\n<\/div>\n\n\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n      <\/div>\n      <div class=\"gist-meta\">\n        <a href=\"https:\/\/gist.github.com\/JacobAvila\/13224de3f167c6cfae033322d1bc435d\/raw\/0f269fa21c80e58146b7a7c96fd82ff8ec82dd18\/App.js\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a>\n        <a href=\"https:\/\/gist.github.com\/JacobAvila\/13224de3f167c6cfae033322d1bc435d#file-app-js\" class=\"Link--inTextBlock\">\n          App.js\n        <\/a>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https:\/\/github.com\">GitHub<\/a>\n      <\/div>\n    <\/div>\n<\/div>\n<\/body><\/html>\n\n\n\n\n<p>Repositorio completo en GitHub<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/JacobAvila\/formularios_en_react.git\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/JacobAvila\/formularios_en_react.git<\/a><\/p>\n\n\n\n<div style=\"height:25px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En este video veremos como crear un formulario utilizando React.js, como asociar cada uno de &hellip; <\/p>\n","protected":false},"author":2,"featured_media":1576,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[49,5,48],"tags":[146,145,106,142,143,109,144,105,141,147],"class_list":["post-1597","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-html5-y-css3","category-javascript","category-programacion-web","tag-aplicaciones-web","tag-clases-en-react","tag-desarrollo-web","tag-formularios","tag-formularios-con-react-js","tag-javascript","tag-manejo-de-variables-de-estado","tag-programacion-web","tag-react-js","tag-validacion-formularios"],"aioseo_notices":[],"author_meta":{"display_name":"Jacob Avila Camacho","author_link":"https:\/\/www.jacobsoft.com.mx\/es_mx\/author\/jacob-avila\/"},"featured_img":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/edd\/2020\/08\/destcada_formularios_react-300x169.png","featured_image_src":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/edd\/2020\/08\/destcada_formularios_react-e1597349292669.png","featured_image_src_square":"https:\/\/www.jacobsoft.com.mx\/wp-content\/uploads\/edd\/2020\/08\/destcada_formularios_react-e1597349292669.png","author_info":{"display_name":"Jacob Avila Camacho","author_link":"https:\/\/www.jacobsoft.com.mx\/es_mx\/author\/jacob-avila\/"},"coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/programacion-web\/html5-y-css3\/\" class=\"advgb-post-tax-term\">HTML5 y CSS3<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/programacion-web\/javascript\/\" class=\"advgb-post-tax-term\">Javascript<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/programacion-web\/\" class=\"advgb-post-tax-term\">Programaci\u00f3n Web<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">HTML5 y CSS3<\/span>","<span class=\"advgb-post-tax-term\">Javascript<\/span>","<span class=\"advgb-post-tax-term\">Programaci\u00f3n Web<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/programacion-web\/\" class=\"advgb-post-tax-term\">aplicaciones web<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/programacion-web\/\" class=\"advgb-post-tax-term\">clases en react<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/programacion-web\/\" class=\"advgb-post-tax-term\">desarrollo web<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/programacion-web\/\" class=\"advgb-post-tax-term\">Formularios<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/programacion-web\/\" class=\"advgb-post-tax-term\">Formularios con react.js<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/programacion-web\/\" class=\"advgb-post-tax-term\">javascript<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/programacion-web\/\" class=\"advgb-post-tax-term\">manejo de variables de estado<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/programacion-web\/\" class=\"advgb-post-tax-term\">programaci\u00f3n web<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/programacion-web\/\" class=\"advgb-post-tax-term\">React.JS<\/a>","<a href=\"https:\/\/www.jacobsoft.com.mx\/es_mx\/category\/programacion-web\/\" class=\"advgb-post-tax-term\">validaci\u00f3n formularios<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">aplicaciones web<\/span>","<span class=\"advgb-post-tax-term\">clases en react<\/span>","<span class=\"advgb-post-tax-term\">desarrollo web<\/span>","<span class=\"advgb-post-tax-term\">Formularios<\/span>","<span class=\"advgb-post-tax-term\">Formularios con react.js<\/span>","<span class=\"advgb-post-tax-term\">javascript<\/span>","<span class=\"advgb-post-tax-term\">manejo de variables de estado<\/span>","<span class=\"advgb-post-tax-term\">programaci\u00f3n web<\/span>","<span class=\"advgb-post-tax-term\">React.JS<\/span>","<span class=\"advgb-post-tax-term\">validaci\u00f3n formularios<\/span>"]}},"comment_count":"0","relative_dates":{"created":"Publicado 6 a\u00f1os hace","modified":"Actualizado 1 a\u00f1o hace"},"absolute_dates":{"created":"Publicado el agosto 16, 2020","modified":"Actualizado el febrero 20, 2025"},"absolute_dates_time":{"created":"Publicado el agosto 16, 2020 6:25 pm","modified":"Actualizado el febrero 20, 2025 1:37 pm"},"featured_img_caption":"","series_order":"","_links":{"self":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/1597","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/comments?post=1597"}],"version-history":[{"count":15,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/1597\/revisions"}],"predecessor-version":[{"id":1794,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/posts\/1597\/revisions\/1794"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/media\/1576"}],"wp:attachment":[{"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/media?parent=1597"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/categories?post=1597"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jacobsoft.com.mx\/es_mx\/wp-json\/wp\/v2\/tags?post=1597"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}