React/redux 应用程序在 Safari 上呈现空白屏幕

Posted

技术标签:

【中文标题】React/redux 应用程序在 Safari 上呈现空白屏幕【英文标题】:React/redux app renders blank screen on Safari 【发布时间】:2016-05-09 12:38:24 【问题描述】:

我在 React/redux 中构建了一个应用程序,它可以在我尝试过的每个浏览器中运行,但 MacOS 上的 Safari 和 iPhone 上的任何浏览器都可以。我没有收到任何错误,没有控制台消息,没有什么能给我一些想法。它只在 Safari 中渲染标签,屏幕是空白的。

http://podcast.exploration.io

你知道我该如何追踪这个问题吗?

谢谢

【问题讨论】:

你有没有试过到处做console.logs,看看你能不能在Safari中发现一个故障点?这将是一个很好的第一步。 是的,我做到了。该动作记录在动作减速器中。然后是 redux saga 应该采取该行动并做一些异步工作......但永远不会被调用。我想知道在这种情况下我将如何弄清楚发生了什么 如果你的 reducer 正在接收动作,但 redux-saga 没有,那让我猜你的中间件有问题。您是否正在使用任何可能不适用于 Safari 的商店增强器,例如 Chrome DevTools 扩展或其他什么? 这就是我创建商店的方式:const store = createStore(reducer, applyMiddleware(sagaMiddleware)) 除此之外,我不做任何其他商店改进。为了保持商店状态,我使用的是不可变的。与您分享资源会有帮助吗? 会不会是webpack的问题?如果我显示 webpack 的构建配置可能会有所帮助 【参考方案1】:

我发现了问题。它失败的主要原因是“获取”功能......这在 Safari 中不可用。我不确定为什么它不会打印任何东西,但我怀疑,因为在 try/catch 中调用了 'fetch'。

【讨论】:

您能否详细说明您是如何解决的? 很久以前,但我猜有些 fetch polyfill。【参考方案2】:

我遇到了类似的问题。我的列表项会被渲染但不会被绘制。所以我可以在开发工具中看到它们,但它们都是白色/透明的。 我尝试在列表项中添加transform: translateZ(0),它解决了这个问题。

【讨论】:

【参考方案3】:

如果您在一台设备上出现黑屏,而在另一台设备上没有,请参阅https://***.com/a/61215326/470749

此外,如果您的代码在某处使用fetch,而您的浏览器不支持它,则可能会发生这种情况。

检查浏览器和操作系统支持:https://caniuse.com/#search=fetch

official Redux docs 说:

我们在示例中使用fetch API。它是一种新的网络制作API 替换XMLHttpRequest 以满足最常见需求的请求。因为 大多数浏览器本身还不支持它,我们建议您使用 cross-fetch图书馆:

// Do this in every file where you use `fetch` 
import fetch from 'cross-fetch' 

在内部,它在客户端使用whatwg-fetch polyfill, 和服务器上的node-fetch,因此您无需更改 API 调用,如果 您将您的应用更改为通用的。

请注意,任何fetch polyfill 都假定 Promise polyfill 已经存在 展示。确保您拥有 Promise polyfill 的最简单方法是 在任何其他代码之前在您的入口点启用 Babel 的 ES6 polyfill 运行:

// Do this once before any other code in your app 
import 'babel-polyfill'

【讨论】:

【参考方案4】:

我也遇到了这个问题。 当我在思考 webpack 时,我在这篇文章之后添加了正确导入 i:http://mts.io/2015/04/08/webpack-shims-polyfills/

【讨论】:

【参考方案5】:

遇到了完全相同的问题。这是由于在正则表达式中使用了lookbehind,Safari 似乎不支持这种方式。看到这个thread

【讨论】:

我认为这是由需要更新的 javascript 依赖项之一引起的。有关更多详细信息,请使用开发人员工具检查块文件以查看导致问题的依赖项。【参考方案6】:

我遇到了同样的问题,我意识到我必须更新 antd@ant-design/charts 的版本,并且效果很好。

【讨论】:

以上是关于React/redux 应用程序在 Safari 上呈现空白屏幕的主要内容,如果未能解决你的问题,请参考以下文章

React全家桶React-Redux

react + redux 无限循环

Redux 使用 react-router-redux 连接“块”导航

react redux 应用链接

react redux 同步调用

React/Redux - 在应用程序加载/初始化时调度操作