当我的屏幕第二次加载时,反应本机组件接收道具不加载

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 在第二次加载时不呈现检查属性

如何在点击时重新加载反应原生地图

Swift - 第二次加载后 Tableview 无法正确重新加载

加载组件时检查道具是不是未定义