- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么? https://codepen.io/jamesplayer/project/editor/AjWvBb
我正在构建一个大型 Redux 应用程序,并设法产生一个错误,其中列表项传递的 id 不再存在于存储中,因此当它从存储中获取完整对象时,它可以'找不到它,导致了一个错误,该错误显然已在react-redux here 中修复
要重现,需要非常特定的组件序列来执行一些安装、调度、连接和渲染,因此我在此代码笔中创建了一个问题示例:https://codepen.io/jamesplayer/project/editor/AjWvBb
似乎调整此设置中的大多数内容都可以修复该错误,但我不确定为什么此特定设置会产生此问题。如果有人可以向我解释为什么这种特定的事件顺序会产生错误,我真的很感激,很长一段时间以来我一直在努力弄清楚它的真相。
基本结构如下:
<Parent>
<Page1 "I dispatch an action to clear out the list items every time I mount,
then re-populate them after about 500ms">
<Page1Wrapper "I'm connected to the store. I get an update when my child
Page1Child1 mounts">
<Child1 "I dispatch an action when I mount that can affect Page1Wrapper">
<Child2 "I'm connected to the store, though in this example I don't receive any updates that would cause a
re-render">
<List "I get a list of ids from the store. I pass each id to a ListItem">
<ListItem "I'm connected to the store. I get passed an id from
List and fetch the whole listItem object">
<Page2 "I don't do much, but going from page1 to page2 and then back to page1 is
a good way to reproduce the error">
最佳答案
在 ConnectedList
中,state.listItems
不为空,因此 List
呈现 ConnectedListItem
的实例。
但是,在 ConnectedListItem
可以从商店获取它之前,state.listItems
已被 CLEAR_LIST_ITEMS
操作清除,这导致它无法从现已清空的 state.listItems
中查找任何匹配项。
此错误需要非常精确的计时才能重现,这可能可以解释为什么更改周围的内容可以修复它(例如,如果 ConnectedListItem
的渲染在 CLEAR_LIST_ITEMS
之前完成)。
如果您为 listItem
提供默认值(例如 const ListItem = ({ listItem = {} })
),它将防止崩溃并且 ConnectedList
将使用更新后的 state.listItems
正确重新渲染。
我建议不要在 connect
中执行 state.listItems.map(listItem => listItem.id)
,因为它会导致组件始终重新渲染,因为即使 state.listItems
没有改变,也会构造一个不同的数组。映射应在组件中或使用 reselect 完成相反。
更简洁的方法是将整个项目传递给 ListItem
,从而无需将 ListItem
连接到存储:
const ListItem = ({ item }) => <li>{item.text}</li>;
const List = ({ listItems }) => (
<div style={{ backgroundColor: 'lightgreen' }} className="border">
I'm List and I get a list of ids from the store. I pass each id to a ListItem.
<ul>{listItems.map(item => <ListItem key={item.id} item={item} />)}</ul>
</div>
);
const ConnectedList = connect(state => ({
listItems: state.listItems,
}))(List);
关于reactjs - Redux:无法弄清楚为什么 ownProps 与状态不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51201158/
我一直在试图理解人们一直在使用的这个网格系统。有时让我觉得自己很蠢。 我了解如果您使用无边距的 12 网格系统。第 12 列将是 100%,而第 1 列将约为 8.33333%。 我一直在看一些网格系
我们被分配了一个用于系统编程的 ASCII 压缩项目,但我在代码中的某一特定行上遇到了困难。 我问了question关于压缩,在处理完纸上示例文件的前十几个字母后,我将数组代码调整到了我的程序中。在
我正在使用 Appcelerator 框架编写应用程序,但偶尔会发生崩溃。我正在尝试找出导致崩溃的原因,因此我决定查看 iOS 模拟器崩溃报告。当然,这对我来说都是希腊语,但我希望得到一些指导,了解其
有人可以给我一些指导或指导我阅读有关 C++ set 对象的优秀教程吗? 我有一段这样的简单代码: #include using namespace std; int main() { ch
老实说,我不知道我的问题是否有解决方案,但我想在 Swift 中捕捉上下文切换发生的时间。 我正在想象一个需要很长时间才能完成的功能,例如远程服务器上的写操作,我在想是否有办法了解何时(至少在哪一行)
我正在使用 Yii2 并且一直在阅读 theming和 theme inheritance ;但是有一些问题: 考虑以下示例: 'view' => [ 'theme' => [
我尝试使用 AJAX 发布,因为我不想使用提交按钮并在每次单击它时重新加载页面。我正在使用此代码进行 ajax: Ajax loading error, please try again.").sho
我正在尝试找出将在 NodeJS 应用程序中使用的 MongoDB 模型的理想设计。该应用程序的设置类似于调查,某些步骤会根据之前的选择提供选项。这是选择和可能性的示例。 第 1 级:图案类型:纯色、
我有一个 API/Express 路由器: router.post("/signup", async function (req, res) { try { var user
我注意到 JFileChooser 隐藏了 Windows 系统文件。 hiberfil.sys、pagefile.sys、$Recycle.Bin 等文件、一些无法打开的快捷方式文件夹等... 我可
这是我第一次使用 Django,到目前为止,我对这个框架的工作方式印象深刻。我目前正在开发我的第一个应用程序,并正在处理数据库内容,但是,我在弄清楚如何在不运行原始查询的情况下进行内部联接时遇到问题。
我在自动调整蒙版大小方面遇到了一些问题。这是交易:我正在使用最近发布的 TwUI ,它从 UIKit 中获取了很多,但它在 Mac 上。这就是我为 iOS 和 Mac 标记的原因。因此,我创建了一个底
好吧,这是一个很长的,打起精神来! :) 最近我尝试在启动期间启动一个用 bash 编写的看门狗脚本。所以我在 rc.local 中添加了一行,其中包含以下内容: su someuser -c "/h
我在我的机器上安装了多个版本的 Windows 软件开发工具包,有趣的是,我的机器上已经安装了一个 Visual studio Installer工具的版本低于近一年前安装的版本: Windows S
widget('zii.widgets.CMenu', array( 'items'=>array( array('label'=>'Home', '
我是一名优秀的程序员,十分优秀!