javascript - 如何比较两个数组的值,如果两者相等或不返回差异。按钮

标签 javascript reactjs react-native react-native-ios

我正在渲染一个 Flatlist,并且我想根据按钮的 ID 是否在我的购物车中来显示一个按钮。我怎样才能这样做......

这是我的按钮代码:

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)”的 id 来自 FlatList 的 renderItem。

this.state.addedToCart 是我的购物车中的商品数组。 目前我在购物车中添加了两个商品,因此 this.state.addedToCart = ["1015", "1016"]

输出是: Here is the image of my output

我只想渲染一次,但按钮的渲染次数与我的购物车大小一样多。

最佳答案

我猜有问题:

return productAdded.map((pid) => {

只需删除它并将 if 语句更改为:

if (productAdded.includes(id)) {

所以它只会返回一个按钮

关于javascript - 如何比较两个数组的值,如果两者相等或不返回差异。按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55880936/

相关文章:

reactjs - 无法在 addEventListener 函数中调用 this.setState

javascript - 在 React 中管理大型状态树

android - react-redux 调度操作不适用于 android 但适用于 ios

javascript - Codeigniter:如果 Controller 未返回数据,则文本输入字段的默认值

javascript - 使用 Angular Directive(指令)更改选定的列表元素颜色

JavaScript 进度条

javascript - 使用 moment.js 更新提供的时间

javascript - getDerivedStateFromProps 在 Redux Reducer 状态更新后不重新渲染

javascript - 模块 RCTEventEmitter 不是注册的可调用模块(调用 receiveTouches)

reactjs - Npm 审计显示创建新的 React Native 项目时存在 9 个漏洞