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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

繁星點點滴滴 2023-02-17 15:48:47
我在函數組件中使用 Array.map 方法呈現了一個按鈕列表。當我嘗試將狀態(tài)傳遞給每個映射的數組項時,渲染結果會立即更改所有數組項,而不是一個一個地更改。這是我的代碼。難道我做錯了什么?抱歉,如果問題已在其他線程中解決,或者我使用了錯誤的方法。這是我的第一個 React 項目,我還在學習中。如果有人可以提供建議,我們將不勝感激。謝謝你!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貢獻1868條經驗 獲得超4個贊

將單個項目放入不同的組件中,以便每個組件都有自己的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>

  );

};


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

TA貢獻1725條經驗 獲得超8個贊

您需要設置active-id在處理click-event. 這將依次呈現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>

  )

}


祝你好運...


查看完整回答
反對 回復 2023-02-17
  • 2 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號