我正在try 使用Next.js实现一个实时搜索栏.我能够处理输入更改,但似乎无法根据输入过滤结果.
Layout.jsx:
import './globals.css';
import SearchBar from './SearchBar';
export const metadata = {
title: 'My App',
description: 'Generated by create next app',
}
export default function RootLayout({ children }) {
return (
<html lang="en">
<body className='text-center bg-sky-800'>
<h1 className='text-4xl mt-4 text-white'>My App</h1>
<SearchBar />
{children}
</body>
</html>
)
}
搜索栏组件:
'use client'
import { useState } from "react"
export default function SearchBar() {
const [searchInput, setSearchInput] = useState('');
function handleChange(e) {
setSearchInput(e.target.value);
}
return (
<input
className="p-3 border rounded bg-blue-100"
type="search"
placeholder="Search Robots"
onChange={handleChange}
/>
)
}
保存我要筛选的项目的代码的组件(它们是卡片):
import Card from './Card'
import { robots } from './robots'
export default function RobotList() {
return (
<main>
{robots.map(robot => {
return (
<Card key={robot.id} id={robot.id} name={robot.name} email={robot.email} />
)
})
}
</main>
)
}
Page.jsx :
import RobotList from './RobotList'
export default function Home() {
return (
<main>
<RobotList />
</main>
)
}
卡组件:
export default function Card({ id, name, email }) {
return (
<div className="text-center bg-green-300 p-3 rounded inline-block m-2 hover:scale-105 transition ease-in duration-300 drop-shadow-xl">
<img src={`https://robohash.org/${id}?200x200`} alt="robot" />
<div>
<h2>{name}</h2>
<p>{email}</p>
</div>
</div>
)
}
我使用的是Next.js v13
.任何帮助都将不胜感激.谢谢:)