当前位置: 首页 > 知识库问答 >
问题:

在 React Native 上使用样式组件设置多个样式道具的样式

曾云
2023-03-14

我在React web上使用样式化组件已经有一段时间了,但最近我开始开发一个React Native应用程序,我决定在中使用样式化的组件。当设计只有style属性的组件时,比如默认的反应本地components,这是非常好的。

但是,我遇到的问题是,当我需要为具有多个样式属性的更复杂的组件设置样式时,例如容器样式inputStyle等。

当只有一个样式属性具有不同的名称时,我可以执行以下操作:

const StyledBadge = styled(({ style, ...rest }) => {
  return <Badge {...rest} containerStyle={style} />;
})`
  position: absolute;
  right: 0;
  top: 0;
`;

这完美无缺,但是当组件具有多种样式时,我不知道该怎么办:

const StyledList = styled(({ style, ...rest }) => {
  return <List {...rest} containerStyle={style} searchInputStyle={?} searchItemStyle={?} />;
})`
`;

对于Gifted React Native Chat这样的组件,情况更糟,因为它具有将属性作为对象传递给内部组件的属性,例如messagePropslistViewPropscontainerProps,所有这些组件都具有 property。

有人知道如何做到这一点吗?或者这是否可能?

几天来,我一直在寻找并试图找到一个解决方案,但我不能。

谢谢

共有1个答案

楮法
2023-03-14

这就是我们最终的结果。

样式化组件仅适用于样式属性,但许多自定义组件不会公开此属性。相反,它们提供了一个 *Style prop,该属性将传递给子组件样式属性。

我们使用< code>attrs函数将样式的组织与其他样式化的组件保存在一个文件中。

这不允许您对伪组件使用传统的css语法,但这是我们能想到的最好的保持所有样式有组织的方法。

 类似资料:
  • 我已经看到了一些解决这个问题的繁重解决方案,在React中使用ref或事件处理程序。我想知道样式化组件中是否有解决方案。 下面的代码显然不正确。当输入子组件具有焦点时,我正在尝试找出设置父组件样式的最简单方法。这是否可以使用样式化组件? 实现这一点的最佳方法是什么,特别是考虑到样式化组件,即使这意味着依赖上面提到的React方法之一?

  • 我正在使用react-native和styled组件做一个应用程序,我想让文本在图像下可见。我返回的代码是这样的: 我想能够为新狗和{photo.breeds[0].name}{photos.breeds[0].letrich}的点击屏幕设置样式,但我想分别设置它们的样式。 现在我的样式看起来像这样(wisch针对两个文本区域) 有人知道如何编写代码,让它为不同的文本部分创建某种“类名”或其他标识

  • 在 Rax 中,有以下几种方式给元素设置样式: 内联样式 通过元素的 style 属性,为元素设置内联样式: 1const myStyle = { 2 fontSize: '24px', 3 color: '#FF0000' 4}; 5 6const element = <h1 style={myStyle}>Hello Rax</h1>; 需要注意的是,style 的值是一个 object,

  • 接口说明 设置样式 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /wish3dearth/api/material/shp/v1.0.0/setStyle 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN sceneId string qu

  • 接口说明 设置样式 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 POST /wish3dearth/api/material/shp/v1.0.

  • 我有一个关于在本地服务器上设置Roboto字体系列(多种样式)的问题。我们无法链接到这些样式的外部服务。 我已经搜索和阅读了大量的文章,尝试了很多,但仍然没有让它对我有用。我肯定我错过了一些简单的东西。这是我所拥有的: 目录设置: 在fonts文件夹中,我有一个名为“roboto”的文件夹,其中包含多种格式的所有样式。我还有一个名为“roboto\u stylesheet.css”的样式表,我将所