美文网首页
React Navigation 配置标题栏

React Navigation 配置标题栏

作者: 老胡写着玩 | 来源:发表于2021-12-20 21:07 被阅读0次

设置header title

Screen 组件接受options 属性,它要么是一个对象,要么是一个返回对象的函数,该对象包含各种配置选项。我们用于标题标题的是title,如下例所示。

function StackScreen() {
  return (
    <Stack.Navigator>
      <Stack.Screen
        name="Home"
        component={HomeScreen}
        options={{ title: 'My home' }}
      />
    </Stack.Navigator>
  );
}

在title中使用params

为了在标题中使用参数,我们需要为屏幕设置一个返回配置对象的函数。

function StackScreen() {
  return (
    <Stack.Navigator>
      <Stack.Screen
        name="Home"
        component={HomeScreen}
        options={{ title: 'My home' }}
      />
      <Stack.Screen
        name="Profile"
        component={ProfileScreen}
        options={({ route }) => ({ title: route.params.name })}
      />
    </Stack.Navigator>
  );
}

使用setoptions更新options

<Button
  title="Update the title"
  onPress={() => navigation.setOptions({ title: 'Updated!' })}
/>

调整header样式

  • headerStyle: header的颜色
  • headerTintColor: 后退按钮和标题都使用这个属性作为它们的颜色
  • headerTitleStyle: 如果我们想自定义标题的fontFamily, fontWeight和其他文本样式属性,我们可以使用这个来实现
function StackScreen() {
  return (
    <Stack.Navigator>
      <Stack.Screen
        name="Home"
        component={HomeScreen}
        options={{
          title: 'My home',
          headerStyle: {
            backgroundColor: '#f4511e',
          },
          headerTintColor: '#fff',
          headerTitleStyle: {
            fontWeight: 'bold',
          },
        }}
      />
    </Stack.Navigator>
  );
}
图片.png

跨屏幕共享通用选项

如果希望在多个屏幕上以类似的方式配置头部信息,可以这样写

function StackScreen() {
  return (
    <Stack.Navigator
      screenOptions={{
        headerStyle: {
          backgroundColor: '#f4511e',
        },
        headerTintColor: '#fff',
        headerTitleStyle: {
          fontWeight: 'bold',
        },
      }}
    >
      <Stack.Screen
        name="Home"
        component={HomeScreen}
        options={{ title: 'My home' }}
      />
    </Stack.Navigator>
  );
}

用自定义组件代替标题

function LogoTitle() {
  return (
    <Image
      style={{ width: 50, height: 50 }}
      source={require('@expo/snack-static/react-native-logo.png')}
    />
  );
}

function StackScreen() {
  return (
    <Stack.Navigator>
      <Stack.Screen
        name="Home"
        component={HomeScreen}
        options={{ headerTitle: (props) => <LogoTitle {...props} /> }}
      />
    </Stack.Navigator>
  );
}

相关文章

网友评论

      本文标题:React Navigation 配置标题栏

      本文链接:https://www.haomeiwen.com/subject/kqazfrtx.html