当前位置:首页 > React

react native 如何写组件

2026-01-25 01:29:10React

React Native 组件开发指南

React Native 组件开发主要分为两种类型:函数组件类组件。以下分别介绍两种组件的写法及核心概念。

函数组件写法

函数组件是 React Native 推荐的方式,使用 Hooks 实现状态管理和生命周期。

import React, { useState, useEffect } from 'react';
import { View, Text, Button, StyleSheet } from 'react-native';

const MyFunctionalComponent = ({ initialValue }) => {
  const [count, setCount] = useState(initialValue || 0);

  useEffect(() => {
    console.log('Component mounted or count updated');
    return () => {
      console.log('Component will unmount');
    };
  }, [count]);

  return (
    <View style={styles.container}>
      <Text>Count: {count}</Text>
      <Button 
        title="Increment" 
        onPress={() => setCount(count + 1)} 
      />
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    padding: 20,
    alignItems: 'center'
  }
});

export default MyFunctionalComponent;

类组件写法

类组件通过继承 React.Component 实现,适用于需要完整生命周期控制的场景。

import React from 'react';
import { View, Text, Button, StyleSheet } from 'react-native';

class MyClassComponent extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      count: props.initialValue || 0
    };
  }

  componentDidMount() {
    console.log('Component mounted');
  }

  componentDidUpdate() {
    console.log('Component updated');
  }

  componentWillUnmount() {
    console.log('Component will unmount');
  }

  render() {
    return (
      <View style={styles.container}>
        <Text>Count: {this.state.count}</Text>
        <Button 
          title="Increment" 
          onPress={() => this.setState({ count: this.state.count + 1 })} 
        />
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    padding: 20,
    alignItems: 'center'
  }
});

export default MyClassComponent;

组件核心特性

Props(属性)
通过父组件传递数据,组件内通过 props(函数组件)或 this.props(类组件)访问。

react native 如何写组件

State(状态)
组件内部可变数据,函数组件用 useState,类组件用 this.statethis.setState

生命周期
函数组件通过 useEffect 模拟,类组件直接使用 componentDidMount 等方法。

react native 如何写组件

样式处理

使用 StyleSheet.create 定义样式对象,支持 Flexbox 布局:

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center'
  },
  text: {
    fontSize: 16,
    color: '#333'
  }
});

组件复用模式

高阶组件(HOC)
包装现有组件扩展功能:

const withLogger = (WrappedComponent) => {
  return (props) => {
    useEffect(() => {
      console.log('Component rendered');
    }, []);
    return <WrappedComponent {...props} />;
  };
};

自定义Hooks
封装可复用的逻辑:

const useCounter = (initialValue) => {
  const [count, setCount] = useState(initialValue);
  const increment = () => setCount(count + 1);
  return { count, increment };
};

最佳实践

  1. 优先使用函数组件和 Hooks
  2. 复杂组件拆分为多个子组件
  3. 样式与逻辑分离,避免内联样式
  4. 使用 PropTypes 或 TypeScript 定义 props 类型

标签: 组件如何写
分享给朋友:

相关文章

vue组件的实现

vue组件的实现

Vue 组件的实现方式 Vue 组件可以通过多种方式实现,主要包括单文件组件(SFC)、全局注册和局部注册。以下是常见的实现方法: 单文件组件(SFC) 单文件组件是 Vue 最推荐的组件化开发方式…

vue实现下拉刷新组件

vue实现下拉刷新组件

Vue 下拉刷新组件实现 核心思路 通过监听 touch 事件计算滑动距离,结合 CSS 过渡动画实现下拉效果,触发刷新回调。 基础实现步骤 监听 touch 事件 在组件 mounted 阶段…

uniapp组件写法

uniapp组件写法

Uniapp 组件的基本写法 Uniapp 的组件写法与 Vue 类似,支持单文件组件(.vue 文件)。一个基本的组件通常包含三个部分:<template>、<script>…

vue实现tooltips组件

vue实现tooltips组件

实现基础 Tooltip 组件 创建一个名为 Tooltip.vue 的单文件组件,包含模板、样式和逻辑: <template> <div class="tooltip-con…

vue实现组件通信

vue实现组件通信

Vue 组件通信方法 Vue 提供了多种方式实现组件间的通信,适用于不同场景。以下是常见的方法: Props 和 Events 父组件通过 props 向子组件传递数据,子组件通过 $emit…

vue 组件实现 遮罩

vue 组件实现 遮罩

Vue 组件实现遮罩层的方法 基础遮罩层实现 创建一个简单的遮罩层组件,使用绝对定位覆盖整个视口。以下是一个基础实现: <template> <div class="mask"…