Communication between components

You can communicate between component by events. First component emit events and second component listen for events.

Full example of how communicate between components you can find here.

Listen on events

Use useEvent hook.

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

import { useEvent } from "eventrix";

const ContactModal = () => {
  const [open, setOpen] = React.useState(false);

  const handleOpen = useCallback(() => {
    setOpen(true);
  }, [setOpen]);

  useEvent('Contacts:open.form', handleOpen);

  const handleClose = useCallback(() => {
    setOpen(false);
  }, [setOpen]);

  const handleSave = useCallback(() => {
    handleClose();
  }, [handleClose]);

  return (
    <div>
      <Dialog open={open} onClose={handleClose}>
        <DialogTitle>Contact</DialogTitle>
        <DialogContent dividers>
          Contact form
        </DialogContent>
        <DialogActions>
          <Button onClick={handleSave} variant="contained">
            Save
          </Button>
        </DialogActions>
      </Dialog>
    </div>
  );
};

export default ContactModal;

Emit event

Use useEmit hook.

import React from "react";
import { Button } from "@material-ui/core";

import { useEmit } from "eventrix";

const Navigation = () => {
  const emit = useEmit();
  return (
      <Button
        variant="contained"
        color="primary"
        onClick={() => {
          emit('Contacts:open.form');
        }}
      >
        Open contact form
      </Button>
  );
};

export default Navigation;

Last updated