我遇到了一个关于React的奇怪问题& Internet 11中的Redux。
我用redux & thunk+promise中间件创建了一个React应用程序。上述应用程序在Chrome、safari和firefox中完全正常工作,但在Internet中运行时,React/Redux没有更新11个道具。
在检查网络选项卡时,我可以看到Http请求被激发得很好。在Redux还原器中记录这个结果也会给出预期的结果。但是,似乎返回新状态并不会更新道具。或者触发任何组件的重新呈现。(仅在IE中)。
我尝试谷歌,看看是否有人在同一条船上,但我找不到与我的问题相匹配的任何东西。
TLDR;Redux不更新道具并在返回状态后触发组件的重新呈现/更新。(仅在IE11中)。
减速机:
const customers = (state = {customers: []}, action) => {
switch (action.type) {
case GET + _FULFILLED:
return Object.assign({}, state, {
customers: action.payload
});
break;
}
}action.payload具有正确的值;返回似乎不更新道具。
控制台中也没有错误。
解决了,我不得不添加一个object.assign填充;我不知道在使用babel之后这是必需的
发布于 2016-03-10 14:58:10
这个问题是因为is 11的ES6支持很差。我发现您需要同时填充Promises和Object.assign。
至于Babel,可能是因为Babel只将非标准代码转换为标准代码。大多数浏览器默认已经实现了Promises/Object.assign,所以我想最新的Babel版本不再需要将其转换为ES5代码了。
发布于 2019-01-22 10:05:49
有一个类似的问题,但解决方案不是与Polyfill (babel-polyfill)相关,因为我已经导入了它们,而是我的axios实例配置。我找到了问题的答案,here。基本上,我所要做的就是通过在axios实例配置中添加以下头来禁用缓存:
const instance = axios.create({
headers: {
Pragma: "no-cache"
}
});
显然,其他浏览器(firefox、chrome等)不要按请求缓存太多,但是在IE情况下,必须显式地设置这些头。
发布于 2016-03-10 10:28:59
IE11不支持承诺,您需要使用类似于--> https://github.com/stefanpenner/es6-promise的多填充
https://stackoverflow.com/questions/35913711
复制相似问题