第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

React:如何在每個(gè)映射的數(shù)組項(xiàng)上傳遞狀態(tài)?

React:如何在每個(gè)映射的數(shù)組項(xiàng)上傳遞狀態(tài)?

我在函數(shù)組件中使用 Array.map 方法呈現(xiàn)了一個(gè)按鈕列表。當(dāng)我嘗試將狀態(tài)傳遞給每個(gè)映射的數(shù)組項(xiàng)時(shí),渲染結(jié)果會(huì)立即更改所有數(shù)組項(xiàng),而不是一個(gè)一個(gè)地更改。這是我的代碼。難道我做錯(cuò)了什么?抱歉,如果問題已在其他線程中解決,或者我使用了錯(cuò)誤的方法。這是我的第一個(gè) React 項(xiàng)目,我還在學(xué)習(xí)中。如果有人可以提供建議,我們將不勝感激。謝謝你!import React, { useState } from "react"export default function Comp() {  const [isActive, setActive] = useState(false)  const clickHandler = () => {    setActive(!isActive)    console.log(isActive)  }  const data = [    { id: 1, name: "Alice" },    { id: 2, name: "Bob" },    { id: 3, name: "Charlie" },  ]  const renderList = items => {    return items.map(item => (      <li key={item.id}>        <button onClick={clickHandler}>          {item.name} {isActive ? "active" : "not active"}        </button>      </li>    ))  }  return (    <ul>{renderList(data)}</ul>  )}
查看完整描述

2 回答

?
MYYA

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊

將單個(gè)項(xiàng)目放入不同的組件中,以便每個(gè)組件都有自己的active狀態(tài):


export default function Comp() {

  const data = [

    { id: 1, name: "Alice" },

    { id: 2, name: "Bob" },

    { id: 3, name: "Charlie" },

  ]


  const renderList = items => (

    items.map(item => <Item key={item.id} name={item.name} />)

  );


  return (

    <ul>{renderList(data)}</ul>

  )

}

const Item = ({ name }) => {

  const [isActive, setActive] = useState(false);

  const clickHandler = () => {

    setActive(!isActive);

  };

   return (

    <li>

      <button onClick={clickHandler}>

        {name} {isActive ? "active" : "not active"}

      </button>

    </li>

  );

};


查看完整回答
反對 回復(fù) 2023-02-17
?
qq_遁去的一_1

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊

您需要設(shè)置active-id在處理click-event. 這將依次呈現(xiàn)active/non-active conditionally:


注意流量(1) > (2) > (3)


function Comp() {

  const [activeId, setActiveId] = React.useState(null);

  const clickHandler = (item) => {

    setActiveId(item.id) // (2) click-handler will set the active id

  }


  const data = [

    { id: 1, name: "Alice" },

    { id: 2, name: "Bob" },

    { id: 3, name: "Charlie" },

  ]


  const renderList = items => {

    return items.map(item => (

      <li key={item.id}>

        <button onClick={() => clickHandler(item)}> // (1) passing the clicked-item so that we can set the active-id

          {item.name} {item.id === activeId ?

            "active" : "not active" // (3) conditionally render

          }

        </button>

      </li>

    ))

  }


  return (

    <ul>{renderList(data)}</ul>

  )

}


祝你好運(yùn)...


查看完整回答
反對 回復(fù) 2023-02-17
  • 2 回答
  • 0 關(guān)注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號