【问题标题】:how to use universal footer for all screens in nativebase如何在 nativebase 中的所有屏幕上使用通用页脚
【发布时间】:2019-03-08 08:30:34
【问题描述】:

我是 react-native 的新手,我正在使用带有 React Navigation 的 nativebase UI 这是我作为主屏幕的主屏幕。

我正在使用 nativebase 组件 ContainerHeaderFooter

我的问题是如何创建一个可以在所有屏幕中导入的页脚或页眉文件?

所以我有一个通用的页脚模板,因为它在所有页面上都是相同的。

代码:

export default class Home extends React.Component {

  render() {
    return (
      <Container>
        <Header>
          <Left/>
          <Body>
            <Title>Home</Title>
          </Body>
          <Right />
        </Header>
        <Content>
          <Text>We have { this.props.screenProps.currentFriends.length } friends!</Text>
          <Button
            block
            onPress={() =>
              this.props.navigation.navigate('Friends')
            }
          >
          <Text>Add some friends</Text>
          </Button>
        </Content>

        <Footer>
          <FooterTab>
            <Button vertical active>
              <Icon name="apps" />
              <Text>Home</Text>
            </Button>
            <Button vertical>
              <Icon name="person" />
              <Text>Friends</Text>
            </Button>
          </FooterTab>
        </Footer>

      </Container>
    );
  }

}

【问题讨论】:

    标签: react-native native-base


    【解决方案1】:

    可以有两种类型的可重用组件

    1. 有状态 - 其中可重用组件(页脚/页眉/等)将拥有自己的状态
    export default class MyFooter extends React.Component{
    
      render() {
        return (
          <Left>
            <Icon name="person" type="EvilIcon" />
            <Text>{props.name}</Text>
          </Left>
         );
       }
    }
    
    import MyFooter from "./MyFooter";  // <-- Don't forget to import
    
    export default class YourScreen extends React.Component {
    
     constructor(props) {
        super(props);
      }
    
      render() {
        return (
           <Container>
            <Header/>
            <Content />
            <MyFooter name="Click Me" /> // <--- this is custom component
         );
       }
    }
    
    1. 无状态 - 它不会有任何状态,只是道具这两个组件驻留在同一文件中 YourScreen.js
    const MyFooter = props => {
      if (props.name) {
        return (
          <Left>
            <Icon name="person" type="EvilIcon" />
            <Text>{props.name}</Text>
          </Left>
        );
      } else {
        return null;
      }
    };
    
    export default class YourScreen extends React.Component {
    
      render() {
        return (
           <Container>
            <Header/>
            <Content />
            <MyFooter name="Click Me" /> // <--- this is custom component
         );
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      • 2019-09-01
      • 2023-03-16
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多