import React from 'react';
import { View, Text } from 'react-native';
// 创建一个全局属性的高阶组件
const withGlobalProps = (WrappedComponent) => {
return class extends React.Component {
static displayName = `withGlobalProps(${WrappedComponent.displayName || WrappedComponent.name})`;
render() {
// 将全局属性作为props传递给被包装的组件
const globalProps = {
theme: 'light',
user: {
id: 123,
name: 'John Doe',
},
// 可以添加更多全局属性
};
return <WrappedComponent {...this.props} {...globalProps} />;
}
};
};
// 示例组件
class SampleComponent extends React.Component {
render() {
return (
<View>
<Text>Theme: {this.props.theme}</Text>
<Text>User ID: {this.props.user.id}</Text>
<Text>User Name: {this.props.user.name}</Text>
</View>
);
}
}
// 使用高阶组件包装示例组件
const GlobalPropsSampleComponent = withGlobalProps(SampleComponent);
export default class App extends React.Component {
render() {
// 在这里,GlobalPropsSampleComponent将拥有全局属性theme和user作为props
return <GlobalPropsSampleComponent />;
}
}
这个代码示例展示了如何创建一个简单的高阶组件,用于将全局属性传递给React Native组件。这种模式在开发需要全局状态(如用户信息、主题设置等)的应用时非常有用。通过这个示例,开发者可以学习到如何利用高阶组件来减少重复代码和提高组件的可复用性。