我正在尝试创建一个具有3个级别的分层菜单选择组件。
结构就是这样:
categorylv0
-> categorylv1
----> categorylv2
单击CategoryLv0
节点和CategoryLv1
节点的初始渲染完成后,一切都很好。我遇到的问题是,当我单击一个CategoryLv1
节点时,应该从组件链下方的父组件发送更新的道具,以在CategoryLv1
级别触发componentWillReceiveProps
。这将setState
并从该节点渲染CategoryLv2
分支。但是,出于某种原因,CategoryLv1
的componentWillReceiveProps
挂钩从未被要求。第一级(CategoryLv0
)可以按预期工作,并收到更新的道具,使我可以在componentWillReceiveProps
中使用setState
触发Rerender。似乎随后的级别应以LV0起作用,但事实并非如此。
我已经包括了一个博览会小吃,因此您可以在行动中看到它。
编辑 该小吃已更新以删除子组件中的冗余状态,componentWillReceiveProps,然后将feltradata = {this.props}添加到flatlists组件零件零食
<div data-snack-id="SkcBrXsMG" data-snack-platform="android" data-snack-preview="true" data-snack-theme="dark" style="overflow:hidden;background:#212733;border:1px solid rgba(0,0,0,.16);border-radius:4px;height:505px;width:100%"></div>
<script async src="https://snack.expo.io/embed.js"></script>
travis向我指向正确的方向。答案是我需要在儿童组件的FlatList
中使用extraData
Prop。没有它,它就不知道rerend。
因此,由于我正在将菜单的主状态作为对子组件的支撑,因此我将extraData={this.props}
设置为访问状态。它有效!