【发布时间】:2020-05-13 09:21:10
【问题描述】:
我有一个包含一些订单的数组,该数组的名称是 getOrdersBySalesman。订单有一些属性:id、client、stage。我想按阶段过滤订单,但它不起作用, 例如,当我选择“PENDENT”时,为什么 console.log 是 [] 我需要将 filterOrders 的结果发送到另一个组件,但我没有结果。怎么了????
const Comandes = () => {
const [orderStage, setOrderStage] = useState('')
useEffect(() => {
setOrderStage(orderStage)
}, [orderStage])
let filterOrders = []
const filterStage = newStage => {
getOrdersBySalesman.forEach(order => {
if (order.stage === newStage) {
filterOrders.push(order)
}
});
setOrderStage(newStage)
}
console.log(filterOrders) = > IS []
return (
<div>
<Layout>
<select
value={orderStage}
onChange={e => filterStage(e.target.value)}
>
<option value="TOTS ELS ESTATS">TOTS ELS ESTATS</option>
<option value="ACABADA">ACABADA</option>
<option value="PENDENT">PENDENT</option>
<option value="CANCELADA">CANCELADA</option>
</select>
{filterOrders.length === 0 ? (
<p className="mt-5 text-center text-2xl">Encara no hi ha comandes </p>
) : (filterOrders.map(order => (
<Order key={order.id} order={order} />
))
)}
</Layout>
</div >
)
}
export default Comandes
【问题讨论】:
-
filterOrders将在<select>的onChange事件上更改,直到那时它是您定义的[]。
标签: reactjs if-statement foreach react-hooks