前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >移动跨平台框架ReactNative 组件属性 props【08】

移动跨平台框架ReactNative 组件属性 props【08】

作者头像
江咏之
发布2022-06-17 14:48:40
9270
发布2022-06-17 14:48:40
举报
文章被收录于专栏:技术社区技术社区

React Native,是一个混合移动应用开发框架,是目前流行的跨平台移动应用开发框架之一。React Native 采用不同的方法进行混合移动应用开发。它不会生成原生 UI 组件,而是基于 React,React Native 是一个用于构建基于 Web 的交互界面的 JavaScript 库,因此会有更丰富的 UI 体验效果,同时也能够很好地调用底层框架的UI使用。

React Native 组件属性 props

前面章节 React Native 组件状态 state 中我们简单的介绍了下 组件属性 props

本章节我们将详细介绍 组件属性 props 以及如何将属性状态 state 和属性组件 props 组合在一起使用。

组件的调用者可以通过 属性 将数据传递给组件,然后组件内部可以通过 组件属性 props 来获取调用者传递的数据。

调用者通过属性传递数据

代码语言:javascript
复制
<SiteNameComponent onPress={this.updateState} name={name} />

组件内部通过组件属性 props 来获取传递给组件的数据

代码语言:javascript
复制
const SiteNameComponent = (props) => {
   return (
      <View>
         <Text onPress = {props.onPress}>
            {props.name}
         </Text>
      </View>
   )
}

因为数据可以通过属性来传递,组件可以没有状态,不用状态来保存任何中间数据。对于没有状态的组件,我们称之为 表现组件

因此我们可以将组件分为两大类:

  1. 容器组件 容器组件是普通的组件,使用 ES6 类 来实现,既包括组件属性,也包含 组件状态。 最重要的是 容器组件有自己的状态和行为处理函数
  2. 纯表现组件 纯表现组件只用于展现数据,数据来源可以是写死的固定不变的,也可以是通过属性传递给组件的。 纯表现组件没有自己的内部状态,所有数据都因为外部而变。

容器组件

容器组件是最普通的组件,使用 ES6 类 来实现,既包括组件属性,也包含组件状态。

使用原则

  1. 如果一个组件需要更新自己的状态,那么该组件就是容器组件。
  2. 容器组件有着自己的状态 state,也可以通过属性 props 接收外部的数据来更新自己的状态。
  3. 如果不需要保存状态,建议不要使用容器组件。

范例

容器组件是最普通的组件, React Native 内置的大部分组件都是容器组件,它们多有一个 state 来保存状态。

下面的代码,我们使用容器组件来实现站点名称的展示,我们通过属性将外部数据作为初始值传递给组件,然后组件自己内部处理用户的点击。

代码语言:javascript
复制
import React, { Component } from 'react'
import { Text, View, StyleSheet,Alert} from 'react-native'

class SiteNameComponent extends React.Component {

    constructor(props) {
        super(props)
        this.state = { name: props.name }
    }

    updateState = () => {
        const name = this.state.name == '简单教程' ? '简单教程,简单编程' : '简单教程'
        this.setState({name:name})
    }

    render() {
        const { name } = this.state
        return (
        <View>
            <Text onPress={this.updateState}>{name}</Text>
        </View>
        )
    }
}

export default class App extends React.Component {

    render() {
        return (
            <View style={styles.container}>
                <SiteNameComponent name={'简单教程'} />
            </View>
        )
    }
}

const styles = StyleSheet.create ({
   container: {
      margin:10
   },
})
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • React Native 组件属性 props
    • 容器组件
      • 使用原则
      • 范例
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档