在 render() 中渲染单独的组件

Rendering separate components in render()

我正在尝试以一种自上而下的行为在屏幕上呈现组件。

代码:

render() {
    this.renderFirstComp(); // stuff in the header
    this.renderSecondComp();
    this.renderThirdComp();

    if(some condition){
        return( <Text> something </Text>)
    }
    else {
        return( <Text> something else </Text>)
    }
}

renderFirstComp() {
    let tests = ['1', '2', '3', '4', '5'];

    return(
        <View>
            <Text> Test #: </Text>
            <Text>{tests[this.state.selectedTest]} </Text>
        </View>
    )
}

renderSecondComp(){
    return .....;
}

renderThirdComp(){
    return .....;
}

但是这个例程不起作用(没有渲染任何东西)。我遵循的模式是否正确?

编辑: 我想渲染以上所有内容:FirstComp、Sec、Third.. if 语句中的内容。

问题:

1. 您没有从 render 方法 returning 任何东西,只有函数 returning 元素。

2. 您不能 return 来自 render 方法的多个元素,因此您需要将它们包装在 div.

使用这个:

render() {
   return(
      <div>
          {this.renderFirstComp()}

          {this.renderSecondComp()}

          {this.renderThirdComp()}

          {
             condition ? <Text> something </Text> : <Text> something else </Text>           
          }
      </div>
   )
}

另一种可能的方式:

使用变量保存由函数编辑的元素 return 并呈现这些变量,如下所示:

render() {
    let first = this.renderFirstComp();
    let second = this.renderSecondComp();
    let third = this.renderThirdComp();
    let additionalElement = this._renderAdditionalElement()
    return(
        <div>
            {first}
            {second}
            {third}
            {additionalElement}
        </div>
    )
}

_renderAdditionalElement(){
    if(true){
        return( <Text> something </Text>) 
    }else{
        return( <Text> something else </Text>)
    }
}