單擊時,我想將 name prop 傳遞給 state hook,但它回傳 undefined
const [fav, setFav ] = useState([]);
useEffect(() => {
dispatch(fetchProfileAction(user));
dispatch(fetchReposAction(user));
}, [user, dispatch]);
{reposList?.name !== "Error" &&
reposList?.map(repo => (
<>
<div className="col-6 g-3 ">
<div className="border rounded-pill px-3 py-2 bg-secondary ">
<i
class="far fa-star pe-2" role={ 'button'}
name={repo?.name} role={'button'}
onClick={e => setFav(...fav, e.target.name)}
></i>
<a
target="_blank"
href={repo?.html_url}
className="text-light"
name={repo?.name} role={'button'}
onClick={e => setFav(...fav, e.target.name)}
>
{repo?.name}
</a>
<strong className="text-light ps-2">({repo?.language})</strong>
</div>
</div>
</>
))}
uj5u.com熱心網友回復:
如果要將名稱附加到 的現有陣列fav,請改用功能更新:
onClick={e => setFav(fav => [...fav, e.target.name])}
建議將狀態視為只讀:基于先前狀態對當前狀態的任何修改都應使用功能更新模式。這允許 React 一起批量更改狀態:請參閱此答案中的進一步解釋。
uj5u.com熱心網友回復:
根據https://docs.w3cub.com/dom/element/name官方名稱僅適用于以下元素:<a>, <applet>, <button>, <form>, <frame>, <iframe>, <img>, <input>, <map>, <meta>, <object>, <param>, <select>, and <textarea>.
因此,由于您在i標簽上使用了 name 屬性,您應該嘗試通過 獲取 name 值getAtrribute,如下所示:
<i
class="far fa-star pe-2" role={ 'button'}
name={repo?.name}
role={'button'}
onClick={e => setFav( [...fav, e.target.getAttribute('name')] )}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/392829.html
標籤:javascript 反应
