Как использовать TransitionComponent в React-Bootstrap

#reactjs #typescript #transition #react-bootstrap #toast

#reactjs #typescript #переход #react-bootstrap #тост

Вопрос:

Я хотел бы установить реквизиты перехода для ToastContainer, чтобы использовать анимацию перехода для всплывающего уведомления.

переход должен быть TransitionComponent .

TransitionComponent выглядит следующим образом;

 export declare type TransitionComponent = React.ComponentType<{
    in?: boolean;
    appear?: boolean;
} amp; TransitionCallbacks>;
export declare type TransitionType = boolean | TransitionComponent;
  

Я бы хотел установить переход, как показано ниже;

 export const Toast = ({ message, onClose }: Props) => {
  const messageRef = useRef<{
    head: string;
    body: string;
    detail?: string;
  }>({ head: "", body: "" });

  if (message) {
    messageRef.current = message;
  }

  return (
    <ToastContainer onClose={onClose} show={!!message} delay={7000} animation transition={transition}>
      <ToastHead>
        <strong className="mr-auto">{messageRef.current.head}</strong>
        <small>{messageRef.current?.detail}</small>
      </ToastHead>
      <ToastBody>{messageRef.current.body}</ToastBody>
    </ToastContainer>
  );
};
  

Вопрос1: Как я могу определить переход?

Вопрос2: Как я могу написать переход внутри JSX?

Любые предложения были бы полезны! Спасибо!!

Ответ №1:

Вы можете получить определение typescript, включив

 import {TransitionComponent} from "react-bootstrap";
  

Чтобы использовать переход, похоже, что вы импортируете TransitionComponent либо из react-bootstrap, который включает в себя Collapse и Fade , либо из базового пакета react-transition-group . Вы передаете весь компонент ToastContainer . Если transition prop не включен, по умолчанию Fade используется значение .

 import {Collapse, Toast as ToastContainer} from "react-bootstrap";

<ToastContainer onClose={onClose} show={!!message} delay={7000} animation transition={Collapse}>
  

Комментарии:

1. Спасибо, Линда! У меня не было идеи Fade , которая уже установлена… Лол. Я попытался использовать Collapse, следуя вашему совету, но у transition props есть ошибка. Type 'ForwardRefExoticComponent<CollapseProps amp; RefAttributes<unknown>>' is not assignable to type 'ComponentClass<{ in?: boolean | undefined; appear?: boolean | undefined; } amp; TransitionCallbacks, any> | FunctionComponent<{ in?: boolean | undefined; appear?: boolean | undefined; } amp; TransitionCallbacks> | undefined'.