反应导航headerBackImage不起作用

时间:2019-06-06 10:39:57

标签: react-native react-navigation react-navigation-stack

我在React Native应用程序中使用React Navigation 3.11,我想在堆栈导航中自定义返回按钮。在docs中说:

  

headerBackImage

     

反应元素或组件以在标题的背面显示自定义图像   按钮。当使用一个组件时,它会收到许多道具   渲染(tintColor,标题)。默认为Image组件,带有   react-navigation / views / assets / back-icon.png背面图片来源,其中   是平台的默认后退图标图像(iOS和   Android上的箭头)。

这是我的配置:

let navigationRouteConfigMap : NavigationRouteConfigMap = {
      _main:
      {screen: page, navigationOptions: 
        { 
          [...]
          headerBackTitle: '',
          headerTruncatedBackTitle: '',
          headerBackImage: Images.backArrow,
        }
      }

    }
    let stackNavigatorConfig:StackNavigatorConfig = {
      headerBackTitleVisible: false
    }

    return createStackNavigator(navigationRouteConfigMap, stackNavigatorConfig)

我的配置中还有其他页面, all 具有相同的共享导航选项和自定义页眉背面图像。但是,在我的应用程序中,它呈现默认的后退箭头。 (尽管headerBackTitleVisible: false确实可以工作)

我在做什么错了?

4 个答案:

答案 0 :(得分:4)

这也可行

headerBackImage: ()=>(<YourAsset />),

答案 1 :(得分:2)

我使用的是实际图像(来自require())而不是React Element。同样,由于某些原因,单个页面也没有选择导航选项。我已切换到<Image.../>,并在defaultNavigationOptions中将对象设置为StackNavigatorConfig,它可以正常工作。

答案 2 :(得分:1)

即使您可以使用自定义组件(在我的情况下为SVG图标),看起来也是如此:

<LoginSignUpNav.Screen
    name="Login"
    component={Login}
    options={{
      headerBackImage: () => <BackIcon width={25} height={25} />,
      headerTintColor: "black",
      headerTransparent: true,
      headerStyle: {
         backgroundColor: 'transparent',
      },
    }}
/>

答案 3 :(得分:0)

您可以使用图像创建自己的按钮

cmake_minimum_required(VERSION 3.9)
project(test)

find_package(CUDA 8.0 REQUIRED)

find_path(
  OpenCL_INCLUDE_DIR CL/opencl.h
  HINTS "${CUDA_TOOLKIT_ROOT_DIR}/include"
  NO_DEFAULT_PATH
)

if (CMAKE_SIZEOF_VOID_P EQUAL 8)
  set(opencl_lib64 "${CUDA_TOOLKIT_ROOT_DIR}/lib64" )
endif()

find_library(
  OpenCL_LIBRARY OpenCL
  HINTS ${opencl_lib64} "${CUDA_TOOLKIT_ROOT_DIR}/lib"
  PATH_SUFFIXES "${CMAKE_LIBRARY_ARCHITECTURE}"
  NO_DEFAULT_PATH
)

find_package(OpenCL REQUIRED)

cuda_add_executable(my_target ...)
target_link_libraries(my_target PRIVATE OpenCL::OpenCL)