亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

似乎無法更改組件的道具

似乎無法更改組件的道具

函數式編程 2021-11-12 17:20:54
我有以下兩個組件:為了可讀性,我將在這個問題中跳過imports 和exports資源管理器.jsconst Explorer = () => {    const [selected, setSelected] = useState('C');     let dirArr = [        <Program key={"C"} name="C" isSelected={true}/>,        <Program key={"D"} name="D" isSelected={false}/>     ];     const changeSelection = (newSelection) => {        if (selected !== newSelection){            dirArr = dirArr.map((el) => {                switch (el.props.name){                   case newSelection:                   case selected:                       return <Program key={el.props.name} name={el.props.name} isSelected={!el.props.isSelected}/>                   default:                    return el                }            });         }       setSelected(newSelection);     }    const handleClick = (e) => {        //TODO: Make sure only <Program> allowed       changeSelection(e.target.parentNode.firstElementChild.innerHTML);    }    return (        <div onClick={handleClick}>            {dirArr}                    </div>    ) }基本上我想要做的是,點擊取消選擇上一個突出顯示的組件并突出顯示新的組件。因此,在mapI'm 翻轉isSelected道具上舊selected元素和newSelection return <Program key={el.props.name} name={el.props.name} isSelected={!el.props.isSelected}/>然后這里是Program.jsconst Program = (props) => {    const [name, setName] = useState(props.name);    const [size, setSize] = useState(0);    const [date, setDate] = useState('01.01.75');    const selectedDeterminer = () => {        return props.isSelected ? { background: 'blue'} : {}    }    return (        <div style={selectedDeterminer()}>            <section className="program-name">{name}</section>            <section className="program-size">{size}</section>            <section className="program-date">{date}</section>        </div>    )}在控制臺記錄時,我確定我選擇的是元素名稱還是el.props.isSelected正確的名稱,它只是在返回的地圖上,它似乎不會影響結果
查看完整描述

1 回答

?
弒天下

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

我想問題在于您使用的是靜態isSelected道具 - 您需要使用狀態selected變量:


let dirArr = [ 

   <Program key={"C"} name="C" isSelected={selected === 'C'}/>, 

   <Program key={"D"} name="D" isSelected={selected === 'D'}/>

];


查看完整回答
反對 回復 2021-11-12
  • 1 回答
  • 0 關注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

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

公眾號

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