Javascript 在React中显示更多信息

Javascript 在React中显示更多信息,javascript,reactjs,if-statement,state,show-hide,Javascript,Reactjs,If Statement,State,Show Hide,我想在单击时显示更多信息,但我有不同的div要显示/隐藏。 所以我是这样做的: 国家是: this.state = { showMore: false, showRewards: false, fees: false, showFees: false }; 其中一个部门: 这太长了,很难看而且不正确(我一次只能看到一个扩展的div)如何改进它 这是一种更好更干净的方法: function show (name) {

我想在单击时显示更多信息,但我有不同的div要显示/隐藏。 所以我是这样做的: 国家是:

this.state = {
        showMore: false,
        showRewards: false,
        fees: false,
        showFees: false
    };
其中一个部门:


这太长了,很难看而且不正确(我一次只能看到一个扩展的div)如何改进它

这是一种更好更干净的方法:

function show (name) { 

  let { showMore, showRewards, showFees } = this.state;
  showMore = name === 'hightlights' && showMore === false;
  showRewards = name === 'rewards' && showRewards === false;
  showFees = name === 'fees' && showFees === false;

  this.setState({
    showFees,
    showRewards, 
    showMore
  });

这是一种更好、更干净的方法:

function show (name) { 

  let { showMore, showRewards, showFees } = this.state;
  showMore = name === 'hightlights' && showMore === false;
  showRewards = name === 'rewards' && showRewards === false;
  showFees = name === 'fees' && showFees === false;

  this.setState({
    showFees,
    showRewards, 
    showMore
  });

如果您能向我们展示细节和奖励的结构,这可能会更容易。我猜你是在映射一个元素,这就是为什么它要打印一个元素。但是,试着改变这一行

detail.rewards.reward.map((name, i) => <p key={i}> { name }</p> )
detail.rewards.reward.map((name,i)=>

{name}

替换为以下代码:

detail.rewards.map((reward, i) => <p key={i}> { reward.name }</p> )
detail.rewards.map((reward,i)=>

{reward.name}


如果您能向我们展示细节和奖励的结构,可能会更容易。我猜你是在映射一个元素,这就是为什么它要打印一个元素。但是,试着改变这一行

detail.rewards.reward.map((name, i) => <p key={i}> { name }</p> )
detail.rewards.reward.map((name,i)=>

{name}

替换为以下代码:

detail.rewards.map((reward, i) => <p key={i}> { reward.name }</p> )
detail.rewards.map((reward,i)=>

{reward.name}


好多了,但我还是一次只能看到一个。好多了,但我还是一次只能看到一个