【发布时间】:2021-10-08 23:08:41
【问题描述】:
我正在尝试使用 react 组件制作下拉菜单,但锚标签未呈现。单击时,锚点应位于下拉列表中,但它们不会出现。如果getItems() 失败,默认下拉菜单应该只是说正在加载。关于下拉菜单有什么建议吗?
Dropdown.js
<li className="nav-item dropdown">
<a className="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img src={shoppingCart} alt="shopping cart" className="" style={{ width: "30px", height: "30px"}}></img>
</a>
<div className="dropdown-menu" aria-labelledby="navbarDropdown">
<CartItems></CartItems>
</div>
</li>
CartItems.js
export default function CartItems() {
const { currentUser } = useAuth();
const [itemsRef, setItemsRef] = useState([]);
async function getItems() {
if(currentUser !== null) {
const q = query(collection(db, currentUser.uid));
console.log('q', q);
const querySnapshot = await getDocs(q);
console.log("snapshot", querySnapshot);
setItemsRef(querySnapshot);
console.log('items', itemsRef)
querySnapshot.forEach((doc) => {
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
});
}
}
useEffect(() => {
getItems();
}, [])
if(itemsRef !== undefined && itemsRef !== null && itemsRef.length !== 0) {
return(
<>
{
itemsRef.forEach((item, index) => {
return <CartItem key={index} item={item} />
})
}
</>
);
} else {
return <a className="dropdown-item" href="#">Loading Cart...</a>
}
}
CartItem.jsx
class cartItem extends React.Component {
constructor(props) {
super(props);
this.state = {
}
}
render() {
return <a className="dropdown-item" href="#">
<img src={this.props.item.image} style={{width: "10px", height: "17px"}}></img>
<p>{this.props.item.title}</p>
<button ></button>
</a>
}
}
export default cartItem;
任何原因这不起作用?
【问题讨论】:
-
代码乍一看还不错。 “他们没有出现” 与其描述什么没有出现,你能告诉我们什么出现了吗?
-
我很抱歉。单击时,下拉菜单根本不会弹出。 url 只是更改为 /#,这是唯一的更改。
标签: javascript reactjs firebase google-cloud-firestore