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

对所有文本组件应用原生样式

怀洛华
2023-03-14

是否有一种简单的方法可以将样式应用于特定类型的所有组件,例如TextScrollView>等,以响应本地构建模板
例如,我希望对所有场景中的所有文本组件使用verdanafontFamily样式。有没有比每次使用Text组件时指定样式更容易实现的方法
还是需要创建自定义文本组件?并使用它代替基本组件,如下面的示例。使用MyText代替文本

const MyText = ({data}) => <Text style={style.commonTextStyle}>{data}</Text>

共有3个答案

张永嘉
2023-03-14

https://github.com/Ajackster/react-native-global-props似乎为大多数反应本地组件(包括文本、视图等)提供了全局样式。GitHub自述中有一些示例。这似乎解决了需要,但我还没有测试过。

仲承福
2023-03-14

您必须创建如下所示的 RN 组件:

/* @flow */

import React, { Component } from 'react';
import { Text as TextRN } from 'react-native';

export default class Text extends Component {
  render() {
    return (
      <TextRN style={[YOUR_CUSTOM_STYLES, this.props.style]}>
        {this.props.children}
      </TextRN>
    )
  }
}

这样,您自己的Text组件可以从您使用它们的任何位置继承其他样式。

注意:请记住,不能在所有情况下都使用您自己的自定义文本组件,例如在TouchableHighlight中,在这些情况下,您必须使用来自react本地库的本地文本。

现在,您只需更改导入内容:

import Text from 'YOUR_PATH/Text.js'

希望这有所帮助。

叶俊郎
2023-03-14

除了Vicky的答案之外,您还可以简单地创建一个名为Text或MyText等的新组件,并在需要时将其导入您的项目。

function MyText(props) {
  return (
    <Text style={styles.MY_CUSTOM_STYLES}>
      {props.children}
    </Text>
  );
}

然后像这样使用它,

import MyText from '/path/to/MyText';

...

render() {
  return ( <MyText>Now I have my custom styles.</MyText> );
}

如果您习惯于定义文本组件,您可以通过更改其名称将其用作导入文本。请参阅此留档以进一步阅读。(请注意:上面的MyText组件是用于轻量级定义的功能无状态组件。)

 类似资料:
  • 我试图将我的文本放在可用区域内,我的约束是这样的: 文本不应溢出, 文本必须在所有可用视图内放大, 单词不应拆分为字符,可以转到下一行句子, 当我在父视图中使用flex时,文本在水平方向上的视图扩展不能超过屏幕宽度 下面是我的代码片段: 结果是: 我努力实现我的目标: 我认为这与自定义字体有关

  • 原生组件说明 小程序中的部分组件是由客户端创建的原生组件,这些组件有: camera canvas input(仅在focus时表现为原生组件) live-player live-pusher map textarea video

  • 我正在编写一个react原生应用程序,其中99%的文本将使用Lato作为默认字体。 我知道我可以像这样设置<code>Text<code>组件的fontFamily: 但是我不想在每个组件上重复自己。 是否有一种方法可以定义全局文本样式,这样我就可以使用<code>文本 最好和推荐的处理方法是什么? 注意:我正在使用展览,以防这很重要。

  • 我在playstore有一个11K的应用程序。该应用程序是本地Java的。我做了一个react原生应用程序与相同的包名,并更改了jks密钥到密钥存储文件和更改了版本代码。我正在使用的应用程序存储jks文件,我得到这个错误,我知道通过卸载解决,但我不能告诉用户卸载,有没有其他方式执行失败的任务':app:installrelease'。 com.android.builder.testing.api

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

  • 我遇到一个错误,陈述如下(通过iOS测试): 无法读取null的属性“getScrollableNode” 在尝试使用反应原生的动画以及侧面样式组件样式工具进行反应和反应原生时。 以下是<代码>的示例 然后,我将此组件导入到我的一个场景中,我想在其中应用动画: 这导致了上面提到的错误,尝试用谷歌搜索它,但找不到任何解释。如有必要,请随时索取更多详细信息。 相关GitHub问题:https://gi