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

时间:2018-10-16 10:42:48

标签: javascript react-native graphcool

我正在使用React Native材质底部导航选项卡从一个选项卡运行到另一个选项卡都很好。第一次,组件将接收道具加载数据并出现警报,

但是,当将选项卡从一个选项卡移到另一个选项卡时,会出现警报提示,直到该选项卡被按下两次。

我的代码如下:

 <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的道具

可以简要了解以下是否查看了Zif文件:- Find here

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

1 个答案:

答案 0 :(得分:0)

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

它的实际含义是: 不要依赖componentwillreceiveprops,该方法可能会像我们预测的那样被调用多次,但是它可能不会多次调用它。因为如果收到的道具没有变化,它将被调用,但实际上什么也没做。

由于您没有提出解决方案,所以我就停在那里,让我知道是否需要进行一些更正或尚不清楚的地方