javascript 通过添加 Package 器实现React Native风格的第三方组件

u1ehiz5o  于 2023-05-21  发布在  Java
关注(0)|答案(1)|浏览(128)

我的问题:
我正在尝试将自己的样式添加到react-native-popup-menu提供的组件中,并将其添加到我的组件库中。它们提供具有以下预期层次结构的Menu、MenuOptions和MenuOption组件:

<Menu>
  <MenuOptions>
    <MenuOption text="A">
    </MenuOption>
    <MenuOption text="B">
    </MenuOption>
  </MenuOptions>
</Menu>

我计划为这些元素中的每一个创建 Package 器,在其中样式化组件,并在有人从组件库导入它时返回 Package 器。
例如,菜单组件的 Package 器:

import { MenuProps } from 'react-native-popup-menu';

type CustomMenuProps = {
  children: React.ReactElement[];
}

const CustomMenu = (props: MenuProps && CustomMenuProps) => {
  return <Menu style={{...someCustomStyle}}>{children}</Menu>
}

这将在每一层上添加 Package 器(一个额外的元素),从而产生以下层次结构:

<CustomMenu>
  <Menu>
    <CustomMenuOptions>
      <MenuOptions>...

软件包不喜欢这样,因为它依赖于层次结构来正确显示菜单。抛出错误“MenuOptions should be a child of Menu”
有没有一种方法可以创建一个自定义样式的菜单,并将其作为组件库中的组件公开?如果它是react,我会覆盖css类,但在react-native中没有级联效果。
任何线索都会很有帮助。谢谢你。

fzsnzjdm

fzsnzjdm1#

我不确定到底是什么问题-所以我只会在这里添加一些提示/线索,可能会帮助你。
检查文档https://github.com/instea/react-native-popup-menu/blob/master/doc/extensions.md和相应的example
从这里,我看到了以下你可以做/使用的事情:

  1. MenuOptions的样式是本机支持的,没有任何问题
const CheckedOption = (props) => (
      <MenuOption value={props.value} text={'\u2713 ' + props.text} />
    )

1.选项容器的自定义样式似乎也可以
<Menu renderer={RoundedContextMenu}>
你只需要一个小样板文件(参见示例)-我想把它 Package 到自定义组件中不是问题
1.任何“左”的风格是触发器,接受任何作为孩子...现在不确定你是否可以轻松地将它 Package 到自己的组件中...

相关问题