4

我已将我的 react-navigation 代码放入一个单独的 Routes 文件中,然后将其导入到我的 App.js 文件中。一切正常,但我在 Atom/Nuclide 中使用 Airbnb ESLint 配置,并收到 tintColor 错误...

“道具验证中缺少 tintColor”

试过这个:

Routes.propTypes = { tintColor: PropTypes.string.isRequired,}

但随后出现错误“tintColor PropType 已定义但 prop 从未使用”

这是代码的一部分

const Routes = () = {
const ContentNavigator = TabNavigator(
{
  Profile: { screen: ProfileStack },
  History: { screen: HistoryStack },
  Questions: {
    screen: QuestionsStack,
    navigationOptions: {
      tabBarIcon: ({ tintColor }) => (
        <Icon name="question-circle" type="font-awesome" size={20} color=
 {tintColor} />
      ),
    },
  },
  Notifications: { screen: NotificationsStack },
},
{
  initialRouteName: 'Profile',
  swipeEnabled: true,
  tabBarOptions: {
    activeTintColor: COLOR_PRIMARY,
  },
  backBehavior: 'none',
});
4

1 回答 1

4

您可以创建一个附加的功能组件PropTypes为其添加并在您的主要组件中使用。例如:

...
import PropTypes from 'prop-types';
...

const QuestionsTabBarIcon = ({ tintColor }) => (
  <Icon name="question-circle" type="font-awesome" size={20} color={tintColor} />
);
QuestionsTabBarIcon.propTypes = {
  tintColor: PropTypes.string.isRequired,
};

...

const ContentNavigator = TabNavigator(
  {
    Profile: { screen: ProfileStack },
    History: { screen: HistoryStack },
    Questions: {
      screen: QuestionsStack,
      navigationOptions: {
        tabBarIcon: QuestionsTabBarIcon
      },
    },
    Notifications: { screen: NotificationsStack },
  },
  {
    initialRouteName: 'Profile',
    swipeEnabled: true,
    tabBarOptions: {
      activeTintColor: COLOR_PRIMARY,
    },
    backBehavior: 'none',
  }
);

...
于 2017-10-14T19:26:02.563 回答