我尝试创建一个包含3个级别的分层菜单选择组件。
结构是这样的:
CategoryLv0
- > CategoryLv1
----> CategoryLv2
单击CategoryLv0
节点并完成CategoryLv1
个节点的初始渲染后,一切正常。我遇到的问题是,当我点击CategoryLv1
节点时,它应该从组件链中的父组件发送更新的道具,以在componentWillReceiveProps
级别触发CategoryLv1
。这将setState
并从该节点呈现CategoryLv2
分支。但是,componentWillReceiveProps
的{{1}}挂钩由于某种原因从未被调用过。第一级(CategoryLv1
)按预期工作,并接收更新的道具,允许我CategoryLv0
在setState
触发重新渲染。似乎随后的级别应该像lv0一样有效,但事实并非如此。
我已经加入了一个世博小吃,所以你可以看到它的实际效果。
修改 小吃已更新,以删除子组件中的冗余状态,componentWillReceiveProps和ADD extraData = {this.props}到flatLists Expo Snack of ComponentSelectionComponent
componentWillReceiveProps

答案 0 :(得分:0)
extraData
中使用FlatList
道具。没有它,它就不知道要重新渲染。
因为我将菜单的主状态作为prop组件传递给子组件,所以我设置extraData={this.props}
来访问状态。它有效!