reactjs - 在静态浏览器属性更改时触发更新

我想在 https://developer.mozilla.org/en-US/docs/Web/API/Notification/permission 浏览器属性更改时触发更新。但是,我不确定如何执行此操作,因为 Notification.permission 是静态的。

即使我更改了浏览器的 notifications 权限,以下内容也不会向控制台打印任何内容:

function MyComponent() {
  console.log(Notification.permission);
  return <MoreGreatStuff />
}

回答1

有不同的选项来检查权限

已授予:用户已明确授予当前源显示系统 notifications 的权限。 denied:用户已明确拒绝当前来源显示系统 notifications 的权限。默认值:用户决策未知;在这种情况下,应用程序的行为就像许可被拒绝一样。

你必须这样检查,

(Notification.permission === "granted") {
    // If it's okay let's create a notification
    var notification = new Notification("Hi there!");
  }

回答2

https://stackoverflow.com/questions/35217959/how-to-listen-for-web-notification-permission-change回答了我自己的问题

权限状态更新可以通过 navigator.permissions.query

要点:

const [permissionState, setPermissionState] = useState()

...

navigator.permissions
  .query({ name: 'notifications' })
  .then(permission => setPermissionState(permission.state)

permissionState 的消费者将在更新时重新呈现。

这给了你一个 https://developer.mozilla.org/en-US/docs/Web/API/PermissionStatus/state 而不是一个 https://developer.mozilla.org/en-US/docs/Web/API/Notification/permission,但是 pish posh 它accpmolishes 同样的事情

相似文章

最新文章