首页 > 解决方案 > 当我的屏幕第二次加载时,反应本机组件接收道具不加载

问题描述

我正在使用 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文件在下面查看可以简要了解:- 在这里查找

请让我知道我在这里犯了什么错误

标签: javascriptreact-nativegraphcool

解决方案


也许这有帮助 https://reactjs.org/blog/2018/06/07/you-probably-dont-need-derived-state.html

它实际上说的是:不要依赖componentwillreceiveprops,该方法可能会像我们预测的那样被调用多次,但它可能不会像调用多次那样更新props。因为如果收到的道具没有改变,它会被调用但实际上并没有做任何事情。

既然你不问解决方案,我就停在那里让我知道是否需要一些更正或仍然不清楚的东西


推荐阅读