react native 父组件与子组件之间如何相互传值

react 中父组件与子组件之间如何相互传值

实现React Native 中父子组件通信间的双向数据流,思路如下:

1.父组件向子组件传递props,其中props 中带有子组件的初始化数据以及回调方法;

2.子组件手动触发父函数传递进来的回调方法,同时将子组件的数据传递出去。

PS.使用 props
来传递事件,并通过回调的方式实现,这样的实现其实不是特别好,但在没有任何工具(redux)的情况下不失为一种简单的实现方式

父组件给子组件传值:props
父组件:

<View>
  <AutoComponent navigate={this.props.navigation.navigate} />
</View>

子组件:

<RkButton rkType='rounded'
  onPress={() =>{
      this.props.navigate('ModeList')
  }
}>模式管理</RkButton>


子组件向父组件传值:子组件里使用this.props…
父组件里:

constructor() {
	super();
	this.state = {
	        title:'标题'
	    };
};
render() {
	return (
    <View>
      <AutoComponent modeText={this.getModeText.bind(this)} />//要写this指向,不然会报错
    </View>
	);
};
getModeText(text){
//父组件接收text值
    this.setState({
      title:text
    });
  }

子组件某个方法里执行:

this.props.color('blue');

报错 this.setState is not a function
原因: this的指向问题。 getModeText (val) {}这个函数获取的是子组件返回的值,而内部需要修改的是 父组件的 state。 这时this 就指的不是父组件,就会报这个错误

解决办法:

  1. 传入函数时加一个绑定:
this.getModeText.bind(this)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在React中,组件组件是通过回调函数的方式实现的。具体步骤如下: 1. 在组件中定义一个回调函数,用于接收组件递的。 2. 将该回调函数作为props递给组件。 3. 在组件中,通过props调用组件递的回调函数,并将需要递的作为参数入。 以下是一个示例代码: 组件: ```javascript import React, { useState } from 'react'; import Child from './Child'; function Parent() { const [value, setValue] = useState(''); // 定义回调函数,用于接收组件递的 const handleValueChange = (newValue) => { setValue(newValue); }; return ( <div> <Child onValueChange={handleValueChange} /> <p>组件接收到的:{value}</p> </div> ); } export default Parent; ``` 组件: ```javascript import React, { useState } from 'react'; function Child(props) { const [inputValue, setInputValue] = useState(''); // 组件中的输入框改变时,调用组件递的回调函数,并将输入框的作为参数入 const handleChange = (e) => { setInputValue(e.target.value); props.onValueChange(e.target.value); }; return ( <div> <input type="text" value={inputValue} onChange={handleChange} /> </div> ); } export default Child; ``` 在上述示例中,组件通过useState定义了一个状态value,并将其作为props递给组件组件中的输入框改变时,调用组件递的回调函数onValueChange,并将输入框的作为参数入。组件接收到组件递的后,更新自身的状态value,并在页面上展示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值