当我的屏幕第二次加载时,反应本机组件接收道具不加载
Posted
技术标签:
【中文标题】当我的屏幕第二次加载时,反应本机组件接收道具不加载【英文标题】:react native component receive props does not load when my screen loaded for second time 【发布时间】:2019-03-20 21:04:25 【问题描述】:我正在使用 React Native Material 底部导航选项卡从一个选项卡到另一个选项卡工作正常。第一次 componentwillreceiveprops 加载数据并出现警报,
但是当标签从一个到另一个被点击时,警报不会出现,直到标签被按下两次。
我的代码如下:
<View style=flex: 0.9>
this.state.activeTab === 0 ? <Tab1/> :this.state.activeTab === 1 ? <Tab2/> : this.state.activeTab === 2 ? ......
</View>
<View style=flex: 0.1,justifyContent:"center">
<BottomNavigation
activeTab=this.state.activeTab
labelColor=myColors.spaceGrey
rippleColor="lightgrey"
style=styles.bottomNavigation
onTabChange=this.handleTabChange>
<Tab
barBackgroundColor=myColors.white
label="Tab1"
icon=<Icon size=window.width/17.1 color=myColors.spaceGrey name="film" />
/>
<Tab
barBackgroundColor=myColors.white
label="Tab2"
icon=<Icon size=window.width/17.1 color=myColors.spaceGrey name="buysellads" />
/>
...........
</BottomNavigation>
我的带有 componentWillReceiveProps 的 Tab1 组件在这里:
componentWillReceiveProps(nextProps)
const propsData = nextProps
const propsDataTwo = propsData
ListOfObjects = propsDataTwo.data.listofobjects
if(ListOfObjects != undefined)
if (ListOfObjects != [] && ListOfObjects != 0)
this.setState(
emptyText: false,
loading: false
,()=>alert("Tab1"))
else
this.setState(
emptyText: true,
loading: false
)
组件会收到类似于 Tab2 的 props
如果Zif文件查看如下可以简单理解:- Find here
请让我知道我在这里犯了什么错误
【问题讨论】:
【参考方案1】:也许这会有所帮助 https://reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html
它实际上说的是: 不要依赖 componentwillreceiveprops,该方法可能会像我们预测的那样被调用多次,但它可能不会像调用那样多次更新 props。因为如果收到的 props 没有改变,它会被调用但实际上并没有做任何事情。
既然你不问解决办法,我就停在那里,让我知道是否需要更正或仍有不清楚的地方
【讨论】:
以上是关于当我的屏幕第二次加载时,反应本机组件接收道具不加载的主要内容,如果未能解决你的问题,请参考以下文章
在页面加载时将道具传递给子组件 - 与 next.js 做出反应
REACT - defaultChecked 在第二次加载时不呈现检查属性