react-native - 具有反应原生线性梯度的可重用组件
问题描述
我正在尝试制作一个具有线性渐变的可重用组件,可用于动态更改每个页面的主题/颜色,但我不断收到错误消息cannot read property of children undefined
。
import React from 'react';
import LinearGradient from 'react-native-linear-gradient';
export const GradientStyle = ({ theme }) => {
const { primary, primaryGradient2, primaryGradient1 } = theme;
return (
<LinearGradient
style={{ flex: 1 }}
colors={[primary, primaryGradient2, primaryGradient1]}>
{this.props.children}
</LinearGradient>
);
};
用法
import {GradientStyle} from '../../../styles/theme/GradientTheme'
const theme1 ={
primary: '#4c669f',
primaryGradient2: '#3b5998',
primaryGradient1: '#192f6a'
}
render() {
return (
<GradientStyle colors={theme1}>
.......content
</GradientStyle>
);
}
解决方案
您不能this.props
在功能组件中使用。您必须将其添加到解构参数中,如下所示:
export const GradientStyle = ({ children, theme }) => {
const { primary, primaryGradient2, primaryGradient1 } = theme;
return (
<LinearGradient
style={{ flex: 1 }}
colors={[primary, primaryGradient2, primaryGradient1]}>
{children}
</LinearGradient>
);
};
然后,您可以创建一个GradientStyle
这样的:
import {GradientStyle} from '../../../styles/theme/GradientTheme'
const theme1 ={
primary: '#4c669f',
primaryGradient2: '#3b5998',
primaryGradient1: '#192f6a'
};
render() {
return (
<GradientStyle theme={theme1}></GradientStyle>
);
}
推荐阅读
- r - 无法重现 tableB[tableA] 的预期结果
- django - 如何使用 django 创建考勤系统?
- angular - 以角度显示警报消息
- unit-testing - 使用基于角色的授权对 Web api 控制器进行单元测试
- flutter - 当视图加载两次时,Google Map 会导致 Flutter 崩溃
- gremlin - Janusgraph - 如何隐藏两个顶点之间的边关系并根据条件再次建立/检索?
- jinja2 - 不支持简单的 http 运算符标头值 jinja 模板
- tensorflowjs - 如何在 tensorflowjs 中克隆模型
- powershell - 所有 powershell 版本都可以支持压缩文件语法
- jquery - 如何在jquery中获取多选的选项值和文本