一、簡(jiǎn)述
最近項(xiàng)目組打算引入weex,并選定了一個(gè)頁(yè)面進(jìn)行試水。頁(yè)面很簡(jiǎn)單,主要是獲取數(shù)據(jù)渲染頁(yè)面,并可以跳轉(zhuǎn)到指定的頁(yè)面。跟之前使用RN 相比,weex 確實(shí)要簡(jiǎn)單很多。從下圖中我們可以看到,weex 頁(yè)面需要跳轉(zhuǎn)到原生頁(yè)面,并且跳轉(zhuǎn)到哪個(gè)頁(yè)面我們可能并不能寫死。也就是說只要原生頁(yè)面之前項(xiàng)目中寫過了,那么理論上來說使用weex 可以任意調(diào)用。那么問題來了,我原來的頁(yè)面可能只知道名字,我怎么為那個(gè)頁(yè)面?zhèn)髦的兀勘热缬袀€(gè)頁(yè)面orderDetailVC ,跳轉(zhuǎn)時(shí)需要傳入orderId,即orderDetailVC.orderId = @"123";
二、思考
可能最直接的想法就是直接原生給weex 提供一個(gè)方法,讓weex 傳入orderId,然后再push。但是如果明天我們需要跳轉(zhuǎn)到另一個(gè)頁(yè)面merchantDetailVC呢?它需要的不是orderId了,可能是一個(gè)merchantId,甚至更多參數(shù)。那怎么才能實(shí)現(xiàn)任意跳轉(zhuǎn)呢?我的想法是,項(xiàng)目是我寫的,需要跳轉(zhuǎn)到哪個(gè)類,那么這個(gè)類名我肯定是清楚的,并且這個(gè)類應(yīng)該需要什么參數(shù)我也是清楚的。只不過我可能不知道怎么用weex 把它參數(shù)傳過去而已。如果知道了類名就意味著我知道了這個(gè)類,我能找到這個(gè)類,那么我就知道這個(gè)類有哪些屬性了,這個(gè)類的所有屬性我都能拿到,只不過有些是我需要給它賦值的,有些是不需要處理的。
三、實(shí)現(xiàn)
整體的思路是:原生給weex 提供一個(gè)通用的跳轉(zhuǎn)方法。參數(shù)是類名和屬性字典。