博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React Native(二):属性、状态
阅读量:4067 次
发布时间:2019-05-25

本文共 1968 字,大约阅读时间需要 6 分钟。


欢迎一起来学习React Native,QQ群:672509442


属性

大多数组件在创建时就可以使用各种参数来进行定制。用于定制的这些参数就称为props(属性)。

原生组件的prop

以常见的基础组件Image为例,在创建一个图片时,可以传入一个名为source的prop来指定要显示的图片的地址,以及使用名为style的prop来控制其尺寸。

import React, { Component } from 'react';import { AppRegistry, Image } from 'react-native';class Bananas extends Component {
render() { let pic = { uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg' }; return ( ); }}AppRegistry.registerComponent('Bananas', () => Bananas);

自定义组件的prop

自定义的组件也可以使用props。通过在不同的场景使用不同的属性定制,可以提高自定义组件的复用性。只需在render函数中引用this.props,然后按需处理即可。下面是一个例子:

import React, { Component } from 'react';import { AppRegistry, Text, View } from 'react-native';class Greeting extends Component {
render() { return (
Hello {
this.props.name}!
); }}class LotsOfGreetings extends Component {
render() { return (
); }}AppRegistry.registerComponent('LotsOfGreetings', () => LotsOfGreetings);

在Greeting组件中将name作为一个属性来定制,这样就能使用name这个属性来设置不同的问候语

效果图:

状态

一个组件可以通过props和state来进行控制,props在父组件中设置,一旦设置完毕,在其生命周期内就不再改变;对于那些需要时时变化的属性,我们使用state来进行控制。

假如我们需要制作一个简单的文字闪烁的效果,对于文字的大小、字体、颜色,可以使用props设置好,我们只需要实时控制文字的可见性即可,这就用到state。

import React, { Component } from 'react';import { AppRegistry, Text, View } from 'react-native';class Blink extends Component {
constructor(props) { super(props); this.state = { showText: true }; // 每1000毫秒对showText状态做一次取反操作 setInterval(() => { this.setState({ showText: !this.state.showText }); }, 1000); } render() { // 根据当前showText的值决定是否显示text内容 let display = this.state.showText ? this.props.text : ' '; return (
{display}
); }}class BlinkApp extends Component {
render() { return (
); }}AppRegistry.registerComponent('BlinkApp', () => BlinkApp);

欢迎一起来学习React Native,QQ群:672509442


转载地址:http://bllji.baihongyu.com/

你可能感兴趣的文章
慢慢欣赏linux 内核模块引用
查看>>
kprobe学习
查看>>
慢慢欣赏linux CPU占用率学习
查看>>
Homebrew指令集
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>
React Native(四):布局(使用Flexbox)
查看>>
React Native(七):Android双击Back键退出应用
查看>>
Android自定义apk名称、版本号自增
查看>>
adb command not found
查看>>
Xcode 启动页面禁用和显示
查看>>
【剑指offer】q50:树中结点的最近祖先
查看>>
二叉树的非递归遍历
查看>>
【leetcode】Reorder List (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Candy(python)
查看>>
【leetcode】Sum Root to leaf Numbers
查看>>
【leetcode】Pascal's Triangle II (python)
查看>>