没有上下文的Material-UI反应通知系统

我想要一个通知组件,该组件将放置在应用程序的顶级根目录中。由于我正在使用material-ui snackbar,因此需要更改组件的open属性,可以从state中提供它。我想放置一次组件,并使用某种通知方法,该方法将在需要时导出和使用。 现在,我用useContext解决了这个问题,但我认为这不是一个好的解决方案:

import React,{ createContext,useState,useContext } from 'react';
import Notification from './snackbar';

const NotificationContext = createContext();

export default props => {
  const [message,setMessage] = useState(null);
  const [opened,setOpened] = useState(false);

  const notificate = ({message}) => {
    setMessage(message);
    setOpened(true);
  }

  const close = () => {
    setMessage(null);
    setOpened(false);
  };

  const { children } = props;

  return (
    <NotificationContext.Provider
      value={{
        notificate
      }}
      {...props}
    >
      <snackbar
        open={opened}
        message={message}
        onClose={close}
        anchorOrigin={{
          vertical: 'bottom',horizontal: 'left'
        }}
        autoHideDuration={4000}
      />
      {children}
    </NotificationContext.Provider>
  );
};

export const useNotification = () => useContext(NotificationContext);

有什么建议可以解决吗?可以使用“错误边界”解决吗?

liaoyi1107 回答:没有上下文的Material-UI反应通知系统

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3168172.html

大家都在问