react native 之子组件和父组件之间的通信
react native开发中,为了封装性经常需要自定义组件,这样就会出现父组件和子组件,那么怎么在父组件和子组件之间相互通信呢,也就是怎么在各自界面push和pop.传值.
父组件传递给子组件:
父组件:
在主组件里面,使用通过写一个子组件的属性,直接把值或者navigator传给子组件即可.如下20行:
1 /**2 * Sample React Native App
3 * https://github.com/facebook/react-native
4 * 父组件传递给子组件
5 * 父组件把值或者navigator传给子组件,然后在子组件里面实现push和显示
6 */
7
8 import React, { Component } from 'react';
9 import ChildOne from './ChildOne'
10 import {
11 AppRegistry,
12 StyleSheet,
13 Text,
14 View
15 } from 'react-native';
16
17 export default class HomeOne extends Component {
18 render() {
19 return (
20 <ChildOne navigatorPush = {this.props.navigator} passValue = '我是一个父组件传给子组件的值'/>
21 );
22 }
23 }
24
25 const styles = StyleSheet.create({
26 container: {
27 flex: 1,
28 justifyContent: 'center',
29 alignItems: 'center',
30 backgroundColor: '#F5FCFF',
31 },
32 welcome: {
33 fontSize: 20,
34 textAlign: 'center',
35 margin: 10,
36 },
37 instructions: {
38 textAlign: 'center',
39 color: '#333333',
40 marginBottom: 5,
41 },
42 });
子组件:
子组件这边可以直接使用主组件写的属性push和pop,通过this.props.属性名使用传过来的值.如下24行.31行
1 /**2 * Sample React Native App
3 * https://github.com/facebook/react-native
4 * 父组件传递给子组件
5 */
6
7 import React, { Component } from 'react';
8 import {
9 AppRegistry,
10 StyleSheet,
11 Text,
12 View,
13 navigator,
14 } from 'react-native';
15 import OneDetails from './OneDetails'
16 export default class ChildOne extends Component {
17 render() {
18 return (
19 <View style={styles.container}>
20 <Text style={styles.welcome} onPress={()=>this.pushOneDetails()}>
21 我是子组件ONE
22 </Text>
23 <Text>
24 {this.props.passValue}
25 </Text>
26 </View>
27 );
28 }
29 pushOneDetails = ()=>{
30
31 this.props.navigatorPush.push({
32 component:OneDetails
33 })
34 }
35 }
36
37 const styles = StyleSheet.create({
38 container: {
39 flex: 1,
40 justifyContent: 'center',
41 alignItems: 'center',
42 backgroundColor: '#F5FCFF',
43 },
44 welcome: {
45 fontSize: 20,
46 textAlign: 'center',
47 margin: 10,
48 },
49 instructions: {
50 textAlign: 'center',
51 color: '#333333',
52 marginBottom: 5,
53 },
54 });
子组件传递给父组件:
子组件:
自组件通过定义一个属性直接把事件传递给主组件,这样就可以在点击子组件实现在主组件里面实现push和pop,如下22行.28行.通过static....把值传给主组件使用,如行17-19
1 /**2 * Sample React Native App
3 * https://github.com/facebook/react-native
4 * 子组件传递给父组件
5 */
6
7 import React, { Component } from 'react';
8 import {
9 AppRegistry,
10 StyleSheet,
11 Text,
12 View
13 } from 'react-native';
14
15
16 export default class ChildTwo extends Component {
17 static defaultProps = {
18 two: '我是子组件传给主组件的值'
19 };
20 render() {
21 return (
22 <Text style={styles.welcome} onPress={()=>this.passMenthod()}>
23 我是子组件TWO
24 </Text>
25 );
26 }
27 passMenthod = () =>{
28 this.props.pushDetails()
29 }
30 }
31
32 const styles = StyleSheet.create({
33 container: {
34 flex: 1,
35 justifyContent: 'center',
36 alignItems: 'center',
37 backgroundColor: '#F5FCFF',
38 },
39 welcome: {
40 fontSize: 20,
41 textAlign: 'center',
42 margin: 10,
43 },
44 instructions: {
45 textAlign: 'center',
46 color: '#333333',
47 marginBottom: 5,
48 },
49 });
父组件:
父组件这边直接通过子组件的属性来接受事件,从而在主组件这边push和pop.如行29,行37-39.通过子组件.属性名.值使用子组件传过来的值,如行31
1 /**2 * Sample React Native App
3 * https://github.com/facebook/react-native
4 * 子组件传递给父组件
5 * 子组件把事件或值传递给父组件,然后在父组件push和显示
6 */
7
8 import React, { Component } from 'react';
9 import {
10 AppRegistry,
11 StyleSheet,
12 Text,
13 View
14 } from 'react-native';
15 import ChildTwo from './ChildTwo'
16 import TwoDetails from './TwoDetails'
17 export default class HomeTwo extends Component {
18 // 构造
19 constructor(props) {
20 super(props);
21 // 初始状态
22 this.state = {
23 value:''
24 };
25 }
26 render() {
27 return (
28 <View style={styles.container}>
29 <ChildTwo pushDetails = {()=>this.pushDetails()} />
30 <Text>
31 {ChildTwo.defaultProps.two}
32 </Text>
33 </View>
34 );
35 }
36 pushDetails = ()=>{
37 this.props.navigator.push({
38 component:TwoDetails
39 })
40 }
41 }
42
43 const styles = StyleSheet.create({
44 container: {
45 flex: 1,
46 justifyContent: 'center',
47 alignItems: 'center',
48 backgroundColor: '#F5FCFF',
49 },
50 welcome: {
51 fontSize: 20,
52 textAlign: 'center',
53 margin: 10,
54 },
55 instructions: {
56 textAlign: 'center',
57 color: '#333333',
58 marginBottom: 5,
59 },
60 });
项目代码:https://github.com/pheromone/react-native-childComponent-component
以上是 react native 之子组件和父组件之间的通信 的全部内容, 来源链接: utcz.com/z/381610.html