美文网首页ReactNative
React Native之Navigator使用,參數的順傳和逆

React Native之Navigator使用,參數的順傳和逆

作者: IPFK | 来源:发表于2017-10-10 16:12 被阅读0次
    render() {
            return (
                <Navigator
                    initialRoute={{
                        component:FirstView,
                        params:{
                          title:'第一个视图',
                            haha:'哈哈',
                            hehe:'呵呵',
                            heihei:'嘿嘿'
                        }
    
                    }}
                    renderScene={(route, navigator) =>
                        <route.component {...route.params} nav={navigator}  />}
                    configureScene={()=>//跳轉動畫
                        Navigator.SceneConfigs.FloatFromBottom
                    }
                />
            );
        }
    

    可以簡單地理解為RN中的Navigator就是route!!!

    兩個最基本屬性分別為:

    1,initialRoute

    • 第一個屬性中定義變量component為下一個需要跳轉的控制器
    • 參數params為傳遞給FirstView的

    2,renderScene

    • 這個是渲染用的,即進來這裡就開始創建下一個需要跳轉的介面,並傳遞參數給下個介面使用
    • route.component 不能寫成firstView,因為當FirstView跳轉到SecondView時,也會進來這個方法,如果寫成FirstView的話,將一直跳轉到FirstView!

    下面為FirstView中的代碼

    render() {
            return (
               <View style={styles.container}>
                   {/*导航条*/}
                   <View style={styles.navStyle}>
                       {/*导航条中间的文字*/}//後面的名字是驗證參數回傳的!!!
                       <Text>{this.props.title+'名字是'+this.state.userName}</Text>
                   </View>
    //-----
                   <TouchableOpacity
                    onPress={()=>this.viewClick()}
                   >
                        <Text>{this.props.title}</Text>//通過props拿到傳遞來的title
    
                   </TouchableOpacity>
               </View>
            );
        }
    

    FirstView的文字點擊方法

    viewClick(){
            //props 属性!!! 这个属性是你这个对象创建的时候定义的!!!
            this.props.nav.push({
                component:SecondView,
                params:{
                   title:'这是第二个界面',
                    //从第二个页面获取userName
                    getUserName:function (user) {
                        this.setState({
                            userName:user
                        })
                    }.bind(this)
                }
            })
        }
    

    其中的getUserName

    • 是一個回調函數,即可以實現Navigator的參數回傳功能
    • 必須加上.bind(this),因為下一個頁面必須使用FirstView這個this才能改變FirstView這個狀態機,所以此時必須把自己傳遞出去

    //---

        viewClick(){
            //为了严谨起见!!先判断
            if(this.props.getUserName){
                this.props.getUserName('我是逆傳過來的值!!')
            }
    
            //props 属性!!! 这个属性是你这个对象创建的时候定义的!!!
            this.props.nav.pop();
        }
    

    在SecondView的點擊事件將要POP返回到FirstView時先調用回調函數就可以回傳值給FirstView了!!!

    相关文章

      网友评论

        本文标题:React Native之Navigator使用,參數的順傳和逆

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