【发布时间】:2022-01-14 08:10:27
【问题描述】:
我想根据复选框值过滤我在页面上获得的元素(如果它被选中)。为此,我有以下代码:
import React from 'react'
import CocktailCard from './CocktailCard'
import { useGlobalContext } from '../helpers/context'
export default function Cocktails() {
const isAlcoholic = React.useRef(null);
const {cocktails} = useGlobalContext()
const changeFilter = (isAlcoholic) ? cocktails.filter(cocktail => cocktail.isAlcoholic === "Alcoholic") : cocktails
console.log(changeFilter)
if(cocktails.length < 1) {
return <h2 className="section-title">No cocktails available</h2>
}
return (
<div>
<div className="row">
<div className="form-check">
<label className="form-check-label" htmlFor="alcoholic">
Alcoholic
<input
className="form-check-input"
type="checkbox"
ref={isAlcoholic}
onChange={() => {
changeFilter(isAlcoholic.current.checked);
}}/>
</label>
</div>
</div>
<div className="container">
<div className="row">
{
cocktails.map((item) => {
return <CocktailCard key={item.id} {...item}/>
})
}
</div>
</div>
</div>
)
}
我尝试做 changeFilter 函数,所以它会过滤掉酒精的,如果没有,它会返回当前数组。我确定我做错了什么,因为我在控制台中收到一个错误,说 changeFilter 不是一个函数。
你们能否给我一个更好的想法,我应该如何解决这个错误和一般的逻辑?
【问题讨论】:
标签: javascript reactjs react-hooks