RN中子组件和父组件之间的数据传递问题

本文探讨了在React Native项目中,父组件如何通过props向子组件传递数据,以及子组件如何通过回调函数向父组件传递数据。虽然Redux可用于状态管理,但在简单场景下,直接使用props进行数据传递更为便捷。文中通过实例详细解释了这两种数据传递方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用RN做项目已经有两个月了,虽然现在大部分情况下已经使用了Redux,进行状态的管理和数据的处理,后续会说一下自己是如何使用Redux的,现在先说一下在RN中一个关键的数据传递问题,虽然后续可能项目中添加了Redux架构,但也不代表这每个页面都去使用,毕竟为了一个简单的数据,需要一堆操作,也挺麻烦的。

1 父组件传递给子组件数据

这个是比较简单,也是比较常见的。
比如:官网上props这一节中的这个例子

import React, { Component } from 'react';
import { AppRegistry, Text, View } from 'react-native';

class Greeting extends Component {
  render() {
    return (
      <Text>Hello {this.props.name}!</Text>
    );
  }
}

class LotsOfGreetings extends Component {
  render() {
    return (
      <View style={{alignItems: 'center'}}>
        <Greeting name='Rexxar' />
        <Greeting name='Jaina' />
        <Greeting name='Valeera' />
      </View>
    );
  }
}

AppRegistry.registerComponent('LotsOfGreetings', () => LotsOfGreetings);

我们发现类Greeting 是子组件,它在使用父组件LotsOfGreetings 里面的数据的时候,会填写属性name=’XXX’,父组件中这样写,子组件就可以利用this.props.name去使用这个数据,所以以后在想从父组件向子组件传递数据的时候,就可以利用这种方式。

2 子组件向父组件传递数据

这种是大家遇到比较多,且会迷茫的地方,其实原理差不多,也很简单。
还拿上面的情况来说,我稍加改造一下:

import React, { Component } from 'react';
import { AppRegistry, Text, View } from 'react-native';

class Greeting extends Component {
_onPressButton(){
this.props.callback("hello wrold");
}
  render() {
    return (
    <TouchableHighlight onPress={this._onPressButton.bind(this)}>
      <Text>Hello {this.props.name}!</Text>
      </TouchableHighlight >
    );
  }
}

class LotsOfGreetings extends Component {
_onPressButton(str){
str....
}
  render() {
    return (
      <View style={{alignItems: 'center'}} callback={this._onPressButton.bind(this)}>
        <Greeting name='Rexxar' />
        <Greeting name='Jaina' />
        <Greeting name='Valeera' />
      </View>
    );
  }
}

AppRegistry.registerComponent('LotsOfGreetings', () => LotsOfGreetings);

上面是直接props传递了数据,这次我利用props传递方法,然后使用方法来回调数据,这种方式,如果对state和props熟悉的应该比较容易看懂,子组件执行了父组件的方法,同时会把子组件的数据传递过去,这样父组件中的方法就可以使用子组件的数据。

后续我会再说一下,没有关系的组件之间是如何传递数据的,其实更简单,就跟Android里面的监听是一样,使用监听的方式,接收数据,并执行自己的操作即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值