美文网首页
navigator 的传值

navigator 的传值

作者: 壹点微尘 | 来源:发表于2017-07-18 21:30 被阅读102次

    例子:男孩向女孩送玫瑰花, 女孩回赠一盒巧克力

    1.在index.ios.js 或者 index.android.js中创建导航
    export default class imooc_gp extends Component {
      render() {
        return (
          <View style={styles.container}>
            {/*Navigator*/}
            <Navigator
                //初始化路由,告诉导航,我的第一个界面是Boy组件
                initialRoute={{
                  component:Boy
                }}
                //渲染场景
                renderScene = {(route,navigator)=>{
                  let Component = route.component;
                  //返回组件  {...route.params} 组件的延展属性
                  return <Component navigator={navigator} {...route.params}/>
                }}
            >
            </Navigator>
            
          </View>
        );
      }
    }
    
    2.在Boy组件中
    //导出组件
    export default class Boy extends Component{
        //构造函数
        constructor(props){
            super(props);
          //该'word'字段是用于记录女孩回赠的巧克力,初始值为空
            this.state={
                word:''
            }
        }
        render(){
            return(
                <View style={styles.container}>
                    <Text style={styles.textStyle}>I am boy</Text>
                    //当'送女孩一直玫瑰🌹'文字被点击时,跳转到女孩界面
                    <Text style={styles.textStyle} onPress={()=>{
                        this.props.navigator.push({
                            component:Girl, //女孩组件
                            //需要传递的参数
                            params:{
                                word:'一束玫瑰🌹🌹🌹🌹🌹🌹',
                                //回调函数,onCallBack:(word) 'word'指的是从女孩组件中传过来的巧克力
                                onCallBack:(word)=>{
                                    //更新状态机
                                    this.setState({
                                        word:word
                                    });
                                }
                            }
                        });
                    }}>送女孩一只玫瑰🌹</Text>
                    //显示女孩送的巧克力
                    <Text style={styles.textStyle}>{this.state.word}</Text>
                </View>
            );
        }
    }
    
    3.Girl组件中
    export default class Girl extends Component{
        render(){
            return(
                <View style={styles.container}>
                    <Text style={styles.text}>I am girl</Text>
                    //显示男孩送的玫瑰花
                    <Text style={styles.text}>我收到了男孩送的:{this.props.word}</Text>
                    <Text style={styles.text} onPress={()=>{
                        //女孩回赠一盒巧克力,调用男孩组件的回调函数
                        this.props.onCallBack('一盒巧克力');
                        //返回
                        this.props.navigator.pop();
                    }}>回赠巧克力</Text>
                </View>
            );
        }
    
    }
    
    navigator正反向传值

    相关文章

      网友评论

          本文标题:navigator 的传值

          本文链接:https://www.haomeiwen.com/subject/xntkkxtx.html