ReactJs: Как позвонить javascript из нажатия кнопки DialogAction - PullRequest
0 голосов
/ 01 апреля 2020

Я хочу выполнить javascript в теге привязки, как показано ниже

<a href="javascript:void(0)" data-cb-type="checkout" data-cb-plan-id="some_id">
 </a>

У меня есть модальное диалоговое окно SubscriptionConfirmDialog , вызываемое из компонента. Вот как я называю

<SubscriptionConfirmDialog
    isVisible={true}
    title="Your trial has ended"
    message="Some long text message"
    confirmBtnLabel="Sign Up"
    type="info"
    onClose={() => this._handleConfirmDialog("cancel")}
    onConfirm={() => this._handleConfirmDialog("sign up")}
  /> 

    private _handleConfirmDialog = (type: string) => {
      // click event is reaching here
       if (type === "cancel") {
          // somethig here
        } else if (type === "signup") {
          this.callJavascriptFunction();
        }
      } 

private callJavascriptFunction = () => {
   return (
     <a href="javascript:void(0)" data-cb-type="checkout" data-cb-plan-quantity="1"
                data-cb-plan-id="some_id">  </a>
        );
    }

Inside SubscriptionConfirmDialog ниже приведен код кнопки внутри тега div. Вот пример кода

import { Dialog,DialogTitle,DialogContent, DialogActions, Button,Divider} from "@material-ui/core";

    <Dialog>  
     <DialogActions>
        <Button
             onClick={onConfirm}
             variant={"contained"}
             color={somecolor}
         > 
        <a href="javascript:void(0)" data-cb-type="checkout" data-cb-plan-id="some_id"> Sign Up</a>
          </Button>
    </DialogActions>
    </Dialog>

Теперь сценарий, когда пользователь нажимает кнопку Зарегистрироваться , должен вызываться код javascript в теге привязки. когда я отлаживаю код, управление отладкой посещает тег привязки Button , но каким-то образом сценарий не выполняется. Для выполнения javascript я создал callJavascriptFunction и вернул скрипт. В этом случае также отладчик, посещающий код, но не выполняющий сценарий.

Когда я помещаю этот сценарий в тег div плоскости (не диалоговое окно, а простой компонент реакции), сценарий работает без сбоев. Я не знаю, почему сценарий не выполняется из диалогового окна, когда я нажимаю кнопку в диалоговом окне.

Пожалуйста, помогите мне выйти из этой странной ситуации.

...