2016-06-14 110 views
0

我现在用的反应本地IOSTabbar类似于下面的示例:阵营原住民死循环

render: function() { 
    return (
     <TabBarIOS 
     tintColor="white" 
     barTintColor="#D7DF01"> 
     <TabBarIOS.Item 
      title="All" 
      icon={require('./x.png')} 
      selected={this.state.selectedTab === 'x'} 
      onPress={() => { 
      this.setState({ 
       selectedTab: 'x', 
      }); 
      }}> 
      {this._renderContent(this.state.selectedTab)} 
     </TabBarIOS.Item> 
     <TabBarIOS.Item 
      icon={require('./y.png')} 
      title="Incoming" 
      selected={this.state.selectedTab === 'y'} 
      onPress={() => { 
      this.setState({ 
       selectedTab: 'y' 
      }); 
      }}> 
      {this._renderContent(this.state.selectedTab)} 
     </TabBarIOS.Item> 
     <TabBarIOS.Item 
      icon={require('./z.png')} 
      title="Outgoing" 
      selected={this.state.selectedTab === 'z'} 
      onPress={() => { 
      this.setState({ 
       selectedTab: 'z' 
      }); 
      }}> 
      {this._renderContent(this.state.selectedTab)} 
     </TabBarIOS.Item> 
     </TabBarIOS> 
    ); 
    }, 

在我执行SQLLite选择_renderContent方法,但这个结束在一个无限loop..Is是正常的TabBar?谁能帮忙?

+0

它可能会帮助,如果你发布的实际代码_renderContent方法。如果你只是在每个TabBar项目中渲染一个简单的文本元素,你是否尝试过如果无限循环仍然存在? – Nicholas

回答

0

请勿将SQLLite调用放入呈现器中。使用生命周期方法,因为每次组件呈现它会:

  • 拨打电话
  • 更新一些状态
  • 触发另一个渲染

等。

你为什么不尝试把呼叫在componentDidMount方法,结果分配到国家像setState({ tab1Content: sqliteResult }),然后调用与tab1Content状态_renderContent

相关问题