Skip to main content

How to extract UTM parameters properly in React to auto-submitted the data within a form

When I'm sending the data with my code the inputs fields (utm_source, utm_medium and utm_campaign) are empty, but the email input is working, I don't really know what I'm doing wrong in my code.

Note: The connection to sending the data is working properly, the problem seems to be in the React code, that is sending empty values of utm_source, utm_medium and utm_campaign.

Code:

import { useRef, useEffect, useState } from "react"


export default function Testing_Form() {
    const [utmSource, setUtmSource] = useState("")
    const [utmMedium, setUtmMedium] = useState("")
    const [utmCampaign, setUtmCampaign] = useState("")
    const [defaultEmail, setDefaultEmail] = useState("")
    const [formSubmitted, setFormSubmitted] = useState(false)
    const btnRef = useRef(null)

    const submitForm = () => {
        console.log("Submited!")
    }

    useEffect(() => {
        const urlParams = new URLSearchParams(window.location.search)
        const utmSrc = urlParams.get("utm_source")
        const utmMdn = urlParams.get("utm_medium")
        const utmCg = urlParams.get("utm_campaign")

        console.log("utmSrc:", utmSrc)
        console.log("utmMdn:", utmMdn)
        console.log("utmCg:", utmCg)

        if (utmSrc && utmMdn && utmCg && !formSubmitted) {
            setFormSubmitted(true)
            setUtmSource(utmSrc)
            setUtmMedium(utmMdn)
            setUtmCampaign(utmCg)
            setDefaultEmail("test@gmail.com")
        }
    }, [])

    return (
        <>
            {console.log(utmCampaign)}
            {console.log(defaultEmail)}

            <div>
                <form name="formData" id="formData">
                    <label style= htmlFor="utm_source">
                        Source
                    </label>
                    <input
                        style=
                        type="text"
                        id="utm_source"
                        name="utm_source"
                        value={utmSource}
                        required
                    />
                    <br />
                    <label style= htmlFor="utm_medium">
                        Medium
                    </label>
                    <input
                        style=
                        type="text"
                        id="utm_medium"
                        name="utm_medium"
                        value={utmMedium}
                        required
                    />
                    <br />
                    <label style= htmlFor="utm_campaign">
                        Campaign
                    </label>
                    <input
                        style=
                        type="text"
                        id="utm_campaign"
                        name="utm_campaign"
                        value={utmCampaign}
                        required
                    />
                    <br />
                    <label style= htmlFor="email">
                        Email
                    </label>
                    <input
                        style=
                        type="email"
                        id="email"
                        name="email"
                        value={defaultEmail}
                        required
                    />
                    <input
                        id="btnSubmit"
                        type="submit"
                        value="Thanks for visiting us!"
                        ref={btnRef}
                        onClick={submitForm}
                    />
                </form>
            </div>
        </>
    )
}

I tried the .submit() alternative and produces an infinite loop. The only approach that makes the code works is simulate a click to the input of type 'submit' to send the data, but still sending only the email input field.

D365 Platform Capturing the submission

Via Active questions tagged javascript - Stack Overflow https://ift.tt/1rvRLgp

Comments

Popular posts from this blog

Why is my reports service not connecting?

I am trying to pull some data from a Postgres database using Node.js and node-postures but I can't figure out why my service isn't connecting. my routes/index.js file: const express = require('express'); const router = express.Router(); const ordersCountController = require('../controllers/ordersCountController'); const ordersController = require('../controllers/ordersController'); const weeklyReportsController = require('../controllers/weeklyReportsController'); router.get('/orders_count', ordersCountController); router.get('/orders', ordersController); router.get('/weekly_reports', weeklyReportsController); module.exports = router; My controllers/weeklyReportsController.js file: const weeklyReportsService = require('../services/weeklyReportsService'); const weeklyReportsController = async (req, res) => { try { const data = await weeklyReportsService; res.json({data}) console...

How to show number of registered users in Laravel based on usertype?

i'm trying to display data from the database in the admin dashboard i used this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count(); echo $users; ?> and i have successfully get the correct data from the database but what if i want to display a specific data for example in this user table there is "usertype" that specify if the user is normal user or admin i want to user the same code above but to display a specific usertype i tried this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count()->WHERE usertype =admin; echo $users; ?> but it didn't work, what am i doing wrong? source https://stackoverflow.com/questions/68199726/how-to-show-number-of-registered-users-in-laravel-based-on-usertype

The number of nodes and edges I calculated manually and by a method provided by networkx library dont match

I am trying to analyse a graph using networkx library in Python. I have implemented a function that returns the nodes and edges of that graph. After that I counted the number of nodes and edges by implementing the len() function for nodes and edges, which gave me 17 for both nodes and edges. However, when I used the method graph.number_of_nodes() of networkx library it gave me 53. My code: import pandas as pd import networkx as nx import matplotlib.pyplot as plt header_list = ["a","b","w"] E =pd.read_csv("aves-barn-swallow-contact-network.edges",sep=" ",header= None,names=header_list) # print(E.head()) # prints first few rows of the csv file G = nx.from_pandas_edgelist(E,"a","b",["w"]) nx.draw(G) plt.show() class GraphAnalyse: #finding nodes and edges def nodeEdge(self,Graph): nodes = Graph.nodes() edges = Graph.edges() ...