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

移动跨平台框架ReactNative组件状态state【07】

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

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

React Native 组件状态 state

总所周知,React 组件的数据由 propsstate 两大部分组成。

propsstate 之间的共同点就是它们都是一个对象或者说一个字典 {}

它们之间也有着显著的区别。

  • state 由 React 组件自己内部管理,是可变的。组件可以随时更新 state 的数据,组件外部则无法访问和更新。
  • props 是 React 组件的属性,是组件外部传递给组件的数据。对于组件来说,这些数据是不可变的。组件只能读取不能更改。只能由调用组件的外部代码来更改。 props 一般情况下由组件自描述,也就是组件描述自己能够接受哪些数据。但外部可以无视,可以传递比组件自描述更多的数据。至于组件自己用不用,那是组件自己的问题,外部组件无权干涩。

本章节我们简单介绍下 stateprops 会在 React Native 组件属性 props 中介绍。

React Native 组件状态 state

组件状态 state 是一个 JavaScript 对象或字典 {}

初始化 state

在 ES6 时代,组件状态就是组件内部的一个变量。

初始化的方式有两种:

使用 state

因为 state 是一个对象或者字典,因此读取 state 的值其实就是访问对象的属性。可以通过对象属性语法来访问 state 的值。

例如通过 this.state.name 访问名称,通过 this.state.site 访问站点网址。

但 React 中一般通过对象解析语法来访问 state,也就是通过下面的方式来获取 state 的值

代码语言:javascript
复制
const {name,site} = this.state

这样能保证我们读取的状态值是 不可变的

例如

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

export default class App extends React.Component {
    state = {
        name: '简单教程',
        site: 'https://www.twle.cn'
    }

    render() {
        const {name,site} = this.state
        return (
            <View style={styles.container}>
                <Text>站点名称:{name}</Text>
                <Text>站点网址:{site}</Text>
            </View>
        )
    }
}


const styles = StyleSheet.create ({
   container: {
      margin:10
   },
})

运行效果如下

React Native 组件状态 state
React Native 组件状态 state

更新 state

React 提供了 this.setState({key:value}) 函数来更新状态 state。

setState() 函数的参数是一个对象或哈希表/字典,是要更新的键值对。

例如要把站点名称改成 简单教程,简单编程,则可以如下使用 setState()

代码语言:javascript
复制
this.setState({name:'简单教程,简单编程'})

例如

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

export default class App extends React.Component {
    state = {
        name: '简单教程',
        site: 'https://www.twle.cn'
    }

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

    render() {
        const {name,site} = this.state
        return (
            <View style={styles.container}>
                <Text onPress={this.updateState}>站点名称:{name}</Text>
                <Text>站点网址:{site}</Text>
            </View>
        )
    }
}


const styles = StyleSheet.create ({
   container: {
      margin:10
   },
})

运行

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • React Native 组件状态 state
    • React Native 组件状态 state
      • 初始化 state
      • 使用 state
      • 更新 state
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档