JSFiddle - React, Tailwind, and code Playground

HTML

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.5/dijit/themes/claro/claro.css">

JavaScript

dojo.require('dijit.form.Form');
dojo.require('dijit.form.Button');

dojo.ready(function() {
    
    dojo.declare('kgf.dijit.TestForm', dijit.form.Form, {
        _onSubmit: function(evt) {
            console.log('_onSubmit before:', evt);
            var r = this.inherited(arguments);
            console.log('_onSubmit:', evt);
            return r;
        }
    });

    dojo.declare('kgf.dijit.TestButton', dijit.form.Button, {
        _onClick: function(evt) {
            var r = this.inherited(arguments);
            console.log('_onClick:', evt, r);
            return r;
        }
    });
    
    var
        
        f = new kgf.dijit.TestForm({}).placeAt(dojo.body()),
        b = new kgf.dijit.TestButton({
            label:'submit', type:'submit'}).placeAt(f.domNode);
    
    dojo.addClass(dojo.body(), 'claro');
    
    b.onClick =
        function(evt) {
            dojo.stopEvent(evt);
            console.log('caught click!', evt);
            //return false;
        };

    f.onSubmit =
        function(evt) {
            dojo.stopEvent(evt);
            console.log('caught submit!', evt);
        };
    
    b.connect(b.valueNode, 'onclick', function(evt) {
        console.log('valueNode clicked!', evt);
        //dojo.stopEvent(evt); //would also prevent submit,
        //but I would much sooner return false from onClick as intended;
        //don't know what other adverse effects doing so here might have...
    });
});