002-聯動菜單 --react-native

一:
起初做這個組件的時候豪無頭緒,整個組件做下來基本都是由師傅教導下完成,好在最后也完成了,所以打算趁著還有記憶的時候,把思路和問題都寫下來,也好以后能經常回顧。

二:

1-:這個組件支持動過點擊事件把第一個ListView里面的值傳給第二個ListView做數據源。

三:Coding
1-:得到一個數據源

const main=[{
    "cars":[{
        "image":require('./img/hanbao.png'),
        "name":'香辣漢堡',
        "introduce":'很美味',
        "money":12,
    }],
    "title":'熱銷'
},{
    "cars":[{
        "image":require('./img/hanbao.png'),
        "name":'2',
        "introduce":'很美味',
        "money":20,
    },{
        "image":require('./img/hangbao2.png'),
        "name":'2',
        "introduce":'很美味',
        "money":18,
    }],"title":'進店必買'
},{
    "cars":[{
        "image":require('./img/hanbao.png'),
        "name":'3',
        "introduce":'很美味',
        "money":20,
    },{
        "image":require('./img/xingkong.png'),
        "name":'3',
        "introduce":'很美味',
        "money":20,
    },{
        "image":require('./img/Meishi.png'),
        "name":'3',
        "introduce":'很美味',
        "money":20,
    }],"title":'掃一掃領紅包'
}

2-:先寫第一個ListView組件

var leftDs = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
this.state={dataSource:leftDs.cloneWithRows(main)}
<ListView
    style={{width:width*0.2, backgroundColor:'#F5F5F5'}}
    dataSource={this.state.dataSource}
    renderRow={(rowData)=>this.renderItem(rowData)}
    showsVerticalScrollIndicator={false} 
    />
    
renderItem=(rowData)=>{
        return(
            <TouchableOpacity style={styles.fistList}
            <Text style={{textAlign:'center'}}>
            {rowData.title}</Text>
            </TouchableOpacity>)};

作為第一個ListView我們還是老方法去布置他

3-:開始寫第二個ListView組件

var rightDs = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
this.state={rightData:rightDs.cloneWithRows(NewList)}
<View style={{backgroundColor:'#FAFAFA'}}>
        <ListView
            style={{width:width*0.8, height:height*0.7,}}
            dataSource={this.state.rightData}
            renderRow={(rowData)=>this.renderItem2(rowData)}
            />
</View>
renderItem2=(rowData)=>{
        return (
            <View style={styles.secondList}>
                <Image style={{height:height*0.12,width:height*0.12}}
                    source={rowData.image}/>
                <View style={{flex:1,paddingLeft:10}}>
                    <View style={{flex:1}}>
                        <Text style={{fontSize:20,backgroundColor:'rgba(0,0,0,0)',}}>{rowData.name}</Text>
                    </View>
                    <View style={{flex:1,justifyContent:'center'}}>
                        <Text style={{backgroundColor:'rgba(0,0,0,0)',}}>{rowData.introduce}</Text>
                    </View>
                    <View style={{flex:1,justifyContent:'flex-end'}}>
                        <Text style={{backgroundColor:'rgba(0,0,0,0)',color:'#FF4040'}}>¥{rowData.money}</Text>
                    </View>
                </View>
                <TouchableOpacity style={{position: 'absolute', right: 10, bottom: 10}}>
                    <Image style={{height: 30, width: 30, borderRadius: 5}}
                           source={require('./img/add.png')}/>
                </TouchableOpacity>
            </View>
        )

    };

我想在點擊第一個ListView的后可以跳出和它相對應的第二個listView

4-:然后把一個ListView的點擊事件補全

//點擊事件,每一次點擊都改變第二個ListView的數據源(把自己數據中的cars傳給第二個ListView做數據源)
onPress={()=>{
                 var rightDs = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
                this.setState({
                    rightData:rightDs.cloneWithRows(rowData.cars),
                      })}}

出錯了,原來是沒有給第二個ListView一個默認的值

5-:給第二個ListView一個默認值,讓他可以在頁面刷新時顯示

 var NewList=main[0].cars;

運行效果

one.gif

學到了一個有用的小技巧,記錄的同時分享一下,如果對你有幫助那就更好了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,422評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,969評論 19 139
  • ¥開啟¥ 【iAPP實現進入界面執行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,536評論 0 17
  • 7月24日,跟著老板去往主君下鄉去過的下黨采風。 午飯是在下黨鄉鎮食堂包廂吃的。一桌的素菜,一碗紅燒肉,可以看得出...
    黃念念小黃閱讀 589評論 0 47
  • 在南國的時候 想念北方凌冽的冬季 大風吹一吹 就好像能把積郁的惆悵 吹成蒼涼 回到了華北 又懷念南方的梅雨 小雨淅...
    若良閱讀 352評論 0 3