通过 json 数据反应原生动态主题

Posted

技术标签:

【中文标题】通过 json 数据反应原生动态主题【英文标题】:React native dynamic themes through json data 【发布时间】:2017-09-24 18:31:43 【问题描述】:

在本机反应中,我如何覆盖我的自定义样式而不是动态样式,其中字体大小和背景颜色从服务器返回 JSON 数据? 我想在我的样式主题中设置那个 JSON 数据主题?你能把接受 JSON 数据(如字体大小或颜色)并创建动态主题的那种样式的语法发给我吗?

【问题讨论】:

【参考方案1】:

你总是可以在一个组件中自定义你的样式,假设你有一个组件:

const MyComponent = (size, color) => <Text style=color: color, fontSize:size>Hello</Text>;

在您的父组件中,您可以从服务器端检索您的主题数据,例如

const themeJson = retrieveTheme()  // some API call

假设您在检索到的 JSON 数据中有 colorsize。 您始终可以将主题颜色和字体大小传递给MyComponent as

<MyComponent color=themeJson.color fontSize=themeJson.size />

然后,文字大小和颜色将根据主题 JSON 数据进行更改。

在 react native 中,样式定义与 react 不同,它使用StyleSheet 创建样式实例,我们不能像我们在 React 项目中所做的那样更改它(这是一个 JSON 对象),如果你想自定义它在渲染它时,您总是可以将自定义样式放在数组中,如

const styles= StyleSheet.create(
   existStyle=
     color: "red",
     fontSize: 15
   
);

const MyComponent = (size, color) => 
<Text style=[styles.existStyle, color: color, fontSize: size] style=color: color, fontSize:size>Hello</Text>;

它将覆盖您在顶部定义的现有样式。希望它会有所帮助。

【讨论】:

以上是关于通过 json 数据反应原生动态主题的主要内容,如果未能解决你的问题,请参考以下文章

如何使用道具制作条件并反应动态主题?

如何在反应原生功能组件中制作动态选择器?

React-native 传递 Json 值来反应原生 <input

如何在反应原生网格图像查看器中传递动态获取的图像数组数据,并在反应原生中使用标题

MySQL 5.7原生JSON格式支持

MySQL 5.7原生JSON格式支持