我的简单应用程序有:
- 数据:对象数组
- 用户、setUsers: useState钩子
- 过滤器:字符串数组
- filteredUsers:它应该是一个对象数组;
在我的应用程序中,用户可以点击并将一个字符串添加到过滤器数组中(过滤器会发生改变),然后我想创建一个新的经过筛选的对象数组filteredUsers,并发送它到用户(通过setUsers(filteredUsers)),并基于过滤器渲染一个新的列表。
当我使用单个字符串时,例如getFilteredUsers('string'),它可以工作,但我无法使用数组。
const users = [
{
id: 849,
name: 'John',
city: 'London',
languages: ['English']
},
{
id: 294,
name: 'Ola',
city: 'Stockholm',
languages: ['Swedish', 'English']
},
{
id: 585,
name: 'Stefano',
city: 'Naples',
languages: ['Italian', 'French']
},
{
id: 946,
name: 'Anna',
city: 'Paris',
languages: ['French']
}
]
const four = document.querySelector('.four');
const arrayFilter = arr => {
const newUsers = filters.map(filter => getUsers(filter));
four.textContent = JSON.stringify(newUsers);
return newUsers
}
const test = ['French'];
console.log(arrayFilter(test))
我也尝试使用useEffect方法,但没有任何结果。
jsfiddle:
https://jsfiddle.net/gmp5doqv/165/
GitHub:
https://github.com/lukaasz555/job-list/blob/main/components/Main/Main.tsx
arrayFilter
函数中,你实际上没有对传入的arr
参数进行任何操作。此外,在该函数中,当你执行filters.map
时,filters
引用了上面设置的值,即const filters = ['French', 'Naples'];
。 - CaseyCconst arrayFilter = filterArray => { const newUsers = filterArray.map(filter => getUsers(filter))[0]; four.textContent = JSON.stringify(newUsers); return newUsers } const filterArray = ['French']; console.log(arrayFilter(filterArray))
- CaseyC