즐겨 찾기 항목 (이 경우 Elements A ~ C)을 하나의 특정 새로 생성 된 목록 (사용자가 생성 할 수 있음)에만 표시하는 방법을 알고 싶습니다.
지금은 요소를 좋아할 때 새로 만든 모든 목록에서 해당 요소를 볼 수 있습니다. 다음은 예입니다 (스타일이 누락되어 죄송 합니다만 <br />
).
목록 ID (목록 또는 즐겨 찾기를 삭제하는 방법과 비슷 함)로 수행 할 수 있다고 가정하지만 더 잘 이해해야합니다. 또한 Chrome 내부에 하위 요소에 키 값이 없다는 경고가 표시되었습니다. 나는 추가하려고 shortId
에 내부 .MAP을 <li>
(같은 <li key={shortid.generate()}>
,하지만 내 솔루션은 최적의 하나가 아닌 것을 두려워 그것은 (어디서?) 다른 곳에 배치해야합니다).
내 CodeSandbox LINK입니다.
어떤 도움이라도 환영합니다.
여기에서 뭔가를 해킹했습니다. 타이프 스크립트를 추가하고 코드를 줄이는 등 몇 가지 개선 할 수 있지만 코딩 기술 수준을 모르기 때문에 따라갈 수 있도록 만들었습니다.
여기에 codeSandbox 링크가 있습니다.
import React, { useState } from "react";
const App = () => {
const [inputValue, setInputValue] = useState("");
const [items, setItems] = useState([]);
const addItem = () => {
const newItem = {
id: new Date().getTime(),
fav: false,
title: inputValue
};
setItems((oldState) => [...oldState, newItem]);
setInputValue("");
};
const makeFav = (id) => {
console.log("id prop", id);
const allItems = [...items];
const itemIndex = allItems.findIndex((item) => item.id === id);
allItems[itemIndex].fav = !allItems[itemIndex].fav;
setItems(allItems);
console.log("itemIndex", itemIndex);
};
return (
<div className="App">
<input
type="text"
placeholder="Add item"
value={inputValue}
onChange={(e) => setInputValue(e.target.value)}
/>
<button onClick={() => addItem()}>Add</button>
<hr />
<h2>Favorites</h2>
{items
.filter((item) => item.fav === true)
.map((item) => {
return (
<div key={item.id}>
{item.title}
<button onClick={() => makeFav(item.id)}>un fav</button>
</div>
);
})}
<hr />
<h2>list</h2>
{items
.filter((item) => item.fav === false)
.map((item) => {
return (
<div key={item.id}>
{item.title}
<button onClick={() => makeFav(item.id)}>fav</button>
</div>
);
})}
</div>
);
};
export default App;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다