reactjs - 按特定键过滤对象数组
问题描述
我正在尝试过滤一组对象(如下所示),当用户在输入字段中键入时,它会返回搜索到的内容。我想通过name
键搜索特定并返回相应的值。
就我目前所拥有的,我不断收到以下错误:
Objects are not valid as a React child (found: object with keys {type, id, name}). If you meant to render a collection of children, use an array instead.
初始状态:
const [searchTerm, setSearchTerm] = useState('');
const [searchResults, setSearchResults] = useState([]);
对象数组:
const people = [
{ name: 'Siri', id: 'siri' },
{ name: 'Alexa', id: 'alexa' },
{ name: 'Google', id: 'google' },
{ name: 'Facebook', id: 'facebook' },
{ name: 'Twitter', id: 'twitter' },
{ name: 'LinkedIn', id: 'linkedin' },
];
使用效果:
useEffect(() => {
const searchResults = processorOptions.filter((o) =>
Object.keys(o).some((k) => o[k].toString().toLowerCase().includes(searchTerm))
);
setSearchResults(searchResults);
}, [searchTerm]);
搜索领域:
<input
name='peopleSearch'
id='peopleSearch'
className='form-control'
type='text'
placeholder='Filter by Name'
/>
显示搜索结果:
{searchResults.map((item) => (
<li>{item}</li>
))}
解决方案
您需要显示项目的名称而不是项目本身:
{searchResults.map((item) => (
<li>{item.name}</li>
))}
推荐阅读
- javascript - 尝试将 fullcalendar 呈现为自定义 html 元素时出现 Javascript 错误“el.addClass 不是函数”
- c++ - 非静态成员的线程调用函数失败
- c++ - 递归乘法 - 如何添加值?
- python - 为什么我不能在课堂上使用 matplotlib 和 tkinter
- android - Android片段的继承与参数
- python - 熊猫设置单元格长度
- android - Android 渲染:其实最后一切都是通过 OpenGL 渲染的
- r - 如何更正产生差异的初始值 NA
- asp.net - AWS Elastic Beanstalk .NET App 的文件在上传和部署后没有改变
- java - java.lang.IllegalStateException:无法将节点从一个状态树移动到另一个状态树 - Vaadin