【问题标题】:How to add object to arraylist如何将对象添加到arraylist
【发布时间】:2019-08-03 15:22:15
【问题描述】:

我在将对象添加到列表时遇到问题。我有一个楼层列表,每个楼层都有房间。我可以添加楼层,但我不知道如何将房间添加到楼层列表。

我尝试获取 floor[index] 或 id 但不起作用。我现在该怎么办?

export default class HomeWork extends Component {
    constructor() {
        super();
        this.state = {
            floors: [
                {
                    floorId: 1, name: 'floor1', rooms: [
                        { roomId: 1, name: 'new room' },
                        { roomId: 2, name: 'new room' }]
                },
                {
                    floorId: 2, name: 'floor2', rooms: [
                        { roomId: 1, name: 'new room' },]
                }
            ]
        }
    }
    addRoom(index) {
        const RoomArr = [...this.state.floors[index].rooms]
        RoomArr.push(
            { id: 2, roomName: 'New Room' });
        this.setState({
            // Stuck here too
        })
    }
    render() {
        return (
            <View style={styles.parent}>
                <View >
                    <FlatList
                        data={(this.state.floors)}
                        renderItem={({ item }) => {
                            return (
                                <View>
                                    <View >
                                        <Text>Floor {item.floorNumber}</Text>
                                        <Text>Room per Floor:</Text>
                                        <Text >{item.rooms.length}</Text>
                                        <TouchableOpacity onPress={(index) => { this.addRoom(index) }}>
                                            <Image source={Images.plusIcon}></Image>
                                        </TouchableOpacity>
                                    </View>
                                    <FlatList
                                        data={(item.rooms)}
                                        numColumns={4}
                                        renderItem={({ item }) => {
                                            return (
                                                <View>
                                                    <Text>{item.roomName}</Text>
                                                </View>
                                            )
                                        }}
                                    ></FlatList>
                                </View>
                            )
                        }}
                    ></FlatList>
                </View>
            </View>
        )
    }
}

我希望至少我可以得到楼层索引

【问题讨论】:

    标签: javascript arrays react-native


    【解决方案1】:

    您可以使用扩展运算符获取楼层,根据索引更新您的特定楼层,然后像这样再次使用setState 与楼层:

    addRoom(index) {
        let floors = [...this.state.floors];
        floors[index].rooms.push({ id: 2, roomName: 'New Room' });
        this.setState({ floors })
    }
    

    【讨论】:

    • 哦,我忘记将索引放入 renderItem T_T 所以我修复了它,它的工作原理。顺便说一句,谢谢你的时间!
    猜你喜欢
    • 2021-05-26
    • 2019-02-18
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    相关资源
    最近更新 更多