ОБНОВЛЕНИЕ:
function TheCards() {
let cardMasterList = require('./scryfall-oracle-cards.json')
let cardMasterListSorted = sortByKey(cardMasterList, 'name')
let [cardClicked, setCardClicked] = useState(null)
//console.log(cardMasterList[0].name)
//console.log(cardMasterListSorted)
const handleClick = () => {
setCardClicked('red')
console.log(cardClicked)
//Please make this do something with the clicked span tag!
}
return (
<form id="card-master-list">
{cardMasterListSorted
.filter(({legalities}) => legalities.vintage === 'legal')
.filter(({rarity}) => rarity === 'common' || 'uncommon')
.slice(0,10)
.map(
(cardName) => {
return (
<li key={cardName.id}>
<span className="card-name" onClick={ handleClick }>{cardName.name}</span>
</li>
)
}
)
}
</form>
)
}
Обновление: это обновленный код выше. Я все еще не могу понять, как ссылаться на то, что я нажимаю. Я хочу сделать больше, чем просто изменить цвет текста, я просто использую «изменить его на красный» как нечто простое. Мне грустно говорить, что мне не хватает jQuery и его простых «this» опорных точек, потому что что-то вроде «this.handleClick» не работает.
function TheCards() {
let cardMasterList = require('./scryfall-oracle-cards.json')
let cardMasterListSorted = sortByKey(cardMasterList, 'name')
console.log(cardMasterList[0].name);
console.log(cardMasterListSorted)
return (
<form id="card-master-list">
{cardMasterListSorted
.filter(({legalities}) => legalities.vintage === 'legal')
.filter(({rarity}) => rarity === 'common' || 'uncommon')
.map(
(cardName) => {
return (
<li key={cardName.id}>
<span className="card-name" onClick={ function DoTheThing() { document.querySelector('.card-name').style.color = 'red' } }>{cardName.name}</span>
</li>
)
}
)
}
</form>
)
}
Все, что я хочу сделать, это чтобы при нажатии на промежуток он становился красным. Это кажется невозможным, так как ничего, что я пробую, не работает - пишу другую функцию для запуска любым возможным способом. «это» не работает, как ожидалось. Чем можно заменить строку document.querySelector, чтобы она работала?