Open In App

Synthetic Events in ReactJS

Last Updated : 18 Aug, 2025
Comments
Improve
Suggest changes
4 Likes
Like
Report

Synthetic events in React are cross-browser wrappers around the browser's original event. Different browsers may have different names for the events. They create a uniform interface that React uses to ensure that events execute consistently across browsers. React normalizes this information to provide a consistent API for handling events regardless of the browser.

Syntax:

e.preventDefault();   // Stop default browser action
e.stopPropagation(); // Stop event bubbling to parent

Note: Here 'e’ is a synthetic event, a cross-browser object. It is made with a wrapper around the actual event of the browser. 

Some of the attributes are:

  • bubbles: Return true or false indicates event is a bubbling event or not.
  • cancelable: Return true or false indicates if the event can be canceled or not.
  • currentTarget: Indicates the element to which the handler is attached
  • defaultPrevented: Return true or false, indicates whether the event has been canceled by preventDefault().
  • eventPhase: Returns number, indicates the phase
  • isTrusted: Return true when the event is generated by the user and false when by the browser/script
  • type: Returns string, it indicates the type of the event

Note: Methods like preventDefault() and stopPropagation() are discussed further.

Steps to create React Application:

Step 1: Create the react project folder, open the terminal, and write the command npm create-react-app folder name.

npm create-react-app project

Step 2: After creating your project folder(i.e. project), move to it by using the following command.

cd project

Project Structure:

Example 1: In App.js we are creating a simple button that on click shows all the properties of the event in the console. We will see that all the above-mentioned properties there in the console.

JavaScript
// App.js
function App() {
    const onClickHandler = (e) => {
        console.log(e);
    }
    return (
        <div className="App">
            <button onClick={onClickHandler}>
                Click
            </button>
        </div>
    );
}

export default App;

Output:

Example 2: Now we will understand about the two void functions: preventDefault(), stopPropagation()

JavaScript
function App() {
    const handlepreventDefault = e => {
        e.preventDefault();
        console.log("clicked on preventDefault")
    }
    const handlestopPropagation = e => {
        e.stopPropagation();
        console.log("clicked on stopPropagation")
    }

    const insideDiv = (e) => {
        e.stopPropagation();
        console.log("clicked on Div")
    }
    return (
        <div className="App">
            <form>
                Type anything: <input />
                <button type="submit"
                    onClick={handlepreventDefault}>
                    preventDefault()
                </button>
                <span onClick={handlestopPropagation}>
                    stopPropagation()
                    <span onClick={insideDiv}> Inside div</span>
                </span>
                <button type="submit">submit</button>

            </form>
        </div>
    );
}

export default App;
JavaScript
// index.js
body {
    margin: 0;
    font - family: -apple - system, BlinkMacSystemFont,
        'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell',
        'Fira Sans', 'Droid Sans', 'Helvetica Neue',
        sans - serif;
    -webkit - font - smoothing: antialiased;
    -moz - osx - font - smoothing: grayscale;
}
  
code {
    font - family: source - code - pro, Menlo, Monaco,
        Consolas, 'Courier New', monospace;
}
button, span{
    padding: 2px 10px;
    font - size: 20px;
    border: 1px solid black;
    background - color: aliceblue;
    cursor: pointer;
}

Output:


Explore