Как получить доступ к переданной опоре в Provider с помощью реакции и машинописного текста? - PullRequest
0 голосов
/ 26 мая 2020

я хочу получить доступ к опоре в поставщике, которая передается в ловушку use с помощью реакции и машинописного текста?

что я пытаюсь сделать?

в компоненте Home я передаю isOpen и значения isOwner для DialogRequest, как показано ниже,

function Home() {
  const onAdd = () => {
    DialogRequest({
      isOpen: true,
      isOwner: true,
    });
  };
  return (
    // Some jsx
  )
}

interface DialogRequestProps {
  isOpen: boolean;
  isOwner: boolean | null;
}

interface Props extends DialogRequestProps {
  showDialog: boolean;
  onHide: any;
}

function Dialog({ isOwner, showDialog, onHide }: Props) {
  return showDialog && <Fragment>//some jsx</Fragment>;
}

interface ContextProps {
  setDialogOpen?: (open: boolean) => void;
}

const DialogContext = React.createContext < ContextProps > {};

export const DialogProvider = ({ children }: any) => {
  const [showDialog, setShowDialog] = React.useState(false);

  const onHide = () => {
    setDialogOpen(false);
  };
  const setDialogOpen = (open: boolean) => {
    if (open) {
      const sessionDialogClosed = sessionStorage.getItem('dialog');
      if (sessionDialogClosed !== 'closed') {
        setShowDialog(open);
        sessionStorage.setItem('dialog', 'closed');
      }
    } else {
      setShowDialog(open);
    }
  };
  return (
    <DialogContext.Provider value={{ setDialogOpen }}>
      {children}
      <Dialog
        onHide={onHide}
        showDialog={showDialog}
        //want to pass isOwner and isOpen props here but how do i access them here that were
        //passed in Home Component ????
      />
    </DialogContext.Provider>
  );
};

export function useDialog() {
  const DialogContext = React.useContext(DialogContext);

  return function DialogRequest(opts: DialogRequestOpts) {
    if (DialogContext && DialogContext.setDialogOpen) {
      DialogContext.setDialogOpen(opts.open);
    }
  };
}

Как видно из приведенного выше кода, я передаю isOwner и isOpen методу DialogRequest в Homecomponent

Я хочу получить доступ к нему в DialogProvider, а не уверен, как это сделать.

Я хочу передать свойства isOwner и isOpen компоненту Dialog в DialogProvider, который передается из компонента Home.

Может ли кто-нибудь помочь мне с этим. спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...