我的第一张卡片的默认状态是 false(reversed),即使我把它设置为 true(默认)

my first card's default state is false(reversed) even though I put it at true (default)

当我的卡片出现时,第二张卡片默认正确设置,但第一张卡片设置相反。我该如何解决 ?我也希望我的第一张卡设置为默认值。 defaultcard1 的状态设置为 true,但当组件加载到我的页面时,就好像它被设置为 false。我试图将它设置为 false 以查看它是否反转它但它仍然开始为 false。

import React, { Component } from 'react';
import { Link } from "react-router-dom";
import './RestaurantMenuSoftDrink.css';

class RestaurantMenuSoftDrink extends Component {
    state = {
        defaultcard1: true
        
    };
    state = {
        defaultcard2: true
    };

    render() {

    return (
<div className="restaurant-menu">

    <div className="menu-container">
    
        {this.state.defaultcard1 ? 
        
            <div className="menu-card-container">
                <div>
                    <button className="menu-card-button-container" onClick={() => {this.setState({ defaultcard1: false });
                    }}>
                    <div className="softdrink1"></div>
                    <h1 className="menu-text">Softdrink 1</h1>
                    </button>
                </div>
            </div> : 
            <div className="menu-card-container">
            <div className="menu-card-button-container">
                <button className="button-text-reverse" onClick={() => {this.setState({ defaultcard1: true });
                }}>
                <h1>
                Softdrink 1
                </h1>
                <h2>
                Item detail
                </h2>
                <h2>
                    Price
                </h2>
                </button>
            </div>
            </div>
        
        }

        {this.state.defaultcard2 ? 
        
        <div className="menu-card-container">
            <div>
                <button className="menu-card-button-container" onClick={() => {this.setState({ defaultcard2: false });
                }}>
                <div className="softdrink2"></div>
                <h1 className="menu-text">Softdrink 2</h1>
                </button>
            </div>
        </div> : 
        <div className="menu-card-container">
        <div className="menu-card-button-container">
            <button className="button-text-reverse" onClick={() => {this.setState({ defaultcard2: true });
            }}>
            <h1>
            Softdrink 2
            </h1>
            <h2>
            Item detail
            </h2>
            <h2>
                Price
            </h2>
            </button>
        </div>
        </div>
    
    }
        
    </div>

    <div className="backtomenubutton-container">
        <Link exact to="/restaurant/menu/drink" className="menu-button-text">
            <button className="backtomenubutton">
                <h1>Back to Drinks</h1>        
            </button>
        </Link>
    </div>

</div>
    );
    }
}

export default RestaurantMenuSoftDrink

问题

出于某种原因,您声明了两个 state class 属性。

state = {
  defaultcard1: true
};
state = {
  defaultcard2: true
};

第二个可能会覆盖第一个,因此,this.state.defaultcard1 是未定义的,或者无论您最初将其设置为什么都是假的。

解决方案

在单个状态对象中声明所有状态值:

state = {
  defaultcard1: true,
  defaultcard2: true
};