javascript - 当我的屏幕第二次加载时,反应本机组件接收道具不加载
问题描述
我正在使用 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文件在下面查看可以简要了解:- 在这里查找
请让我知道我在这里犯了什么错误
解决方案
也许这有帮助 https://reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html
它实际上说的是:不要依赖componentwillreceiveprops,该方法可能会像我们预测的那样被调用多次,但它可能不会像调用多次那样更新props。因为如果收到的道具没有改变,它会被调用但实际上并没有做任何事情。
既然你不问解决方案,我就停在那里让我知道是否需要一些更正或仍然不清楚的东西
推荐阅读
- mysql - Windows 更新后 Xammp MySQL 无法启动
- google-bigquery - 根据另一个表中的开始日期和结束日期对值求和
- ios - 导航到主页后,swrevealcontroller 无法正常工作
- java - vertx.setPeriodic函数时间间隔减小的问题
- r - 在 32 位计算机上重新安装 data.table 时遇到问题
- sql - ToDate 参数未在 SSRS 报告中显示当前日期记录
- coq - 无法将变量绑定到包装的打开公式
- leaflet - 创建地图后更改 fadeAnimation 选项
- javascript - 我该如何解决这个“ajax 请求实体太大”
- node.js - 如何使用现有用户的 .id 和 mongoose 模型填充?