在反应导航 <drawerItems> 中传播道具

Posted

技术标签:

【中文标题】在反应导航 <drawerItems> 中传播道具【英文标题】:Prop spreading in react navigation <drawerItems> 【发布时间】:2020-01-07 12:09:27 【问题描述】:

我在 typescript 中构建了一个 react native 应用程序。我正在使用来自反应导航的抽屉项目组件。

<DrawerItems
  ...this.props
  items=items
  itemStyle=styles.drawerItem
  labelStyle=material.body1
  activeBackgroundColor="transparent"
/>

出于学习目的,我将 lint 设置得非常严格。现在我收到以下错误消息:

propp 传播是禁止的(react/jsx-props-no-spreading)

我尝试过分开传递道具,但它需要其他我不知道从哪里获得的道具。谁能告诉我如何在不传播道具的情况下重写它?

【问题讨论】:

【参考方案1】:

我想通了。我调试了道具并将所有孩子单独放入。 完成的代码如下所示:

            <DrawerNavigatorItems
              items=items
              itemStyle=styles.drawerItem
              labelStyle=material.body1Object
              activeBackgroundColor="transparent"
              drawerPosition="left"
              renderIcon=renderIcon
              getLabel=getLabel
              onItemPress=onItemPress
            />

请注意,我同时更新了我的包,所以 ...props 的原始子代可能会有所不同

【讨论】:

因此,您没有改进代码,而是降低了代码的可读性和对未来更新的鲁棒性。在没有更好的解决方案的情况下,这种情况下最好的解决方案可能是禁用此行的规则:/* eslint-disable-next-line react/jsx-props-no-spreading */ 正如原始问题中所述,出于学习目的,我已将其设置为严格。我认为 linter 规则是事实,因为我还是 react-native 的初学者。可读性和健壮性不是这个项目的目标,它是为了理解 react-native。通过弄清楚这个道具传播问题,我学到了很多东西。 linter 规则在这里帮助了我。

以上是关于在反应导航 <drawerItems> 中传播道具的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的错误:在路由器上下文之外呈现的 <Link> 无法导航。(…)反应

反应导航未定义错误

颤振 Dart 中缺少 DrawerItem 类

在地图功能中反应本机导航

无法通过反应本机导航导航到有条件地设置屏幕

从嵌套屏幕导航到不同选项卡堆栈中的另一个嵌套屏幕(反应导航)