Как сравнить два значения массива и, если они равны или нет, возвращает diff.кнопка для этого - PullRequest
0 голосов
/ 27 апреля 2019

Я рендеринг Flatlist и в этом я хочу, чтобы отображать кнопку на основе, если идентификатор кнопки находится в моей корзине.Как я могу это сделать ...

это мой код для кнопки:

addBtn = (id) => {

        try{
            let productAdded = this.state.addedToCart;
            return productAdded.map((pid) => {
                if (pid == id) {
                    // console.log(pid);
                    // console.log("-----------");
                    console.log(id + " is added into cart");
                    return(
                        <Button
                            key={id}
                            style={{ 
                                backgroundColor: '#fff',
                                borderWidth: 2,
                                borderColor: '#2e6153',
                                borderStyle: 'solid',
                            }}
                        >
                            <Text style={{color: '#2e6153',}}>Added</Text>
                        </Button>
                    );
                } else {
                    console.log("not added to cart");
                    return(
                        <Button
                            key={id}
                            onPress={() => {
                                this.saveCart(id);
                            }} 
                            style={{ 
                                backgroundColor: '#2e6153',
                                borderWidth: 2,
                                borderColor: '#2e6153',
                                borderStyle: 'solid',
                                width: 80,
                                alignItems: 'center',
                                justifyContent: 'center',
                            }}
                        >
                            <Text>Add</Text>
                        </Button>
                    );
                }
            });
        }catch(errors){
            console.log(errors);
        }

    }

, где идентификатор "addBtn = (id)" исходит из renderItem из FlatList.

и this.state.addedToCart - это массив моих товаров, которые есть в моей корзине.В настоящее время я добавил в корзину два товара, поэтому this.state.addedToCart = ["1015", "1016"]

и вывод: Вот изображение моего вывода

Я хочу сделать это только один раз, но кнопки отображают столько раз, сколько размер моей корзины.

1 Ответ

0 голосов
/ 27 апреля 2019

Полагаю, есть проблема:

return productAdded.map((pid) => {

просто удалите его и измените оператор if на:

if (productAdded.includes(id)) {

, чтобы он возвращал только одну кнопку

...