我有一个非常奇怪的问题。 长话短说,即时消息与上下文API配合使用。 当我尝试使用过滤器从状态中删除项目时,使用状态功能无法启动
我的数据如下所示: enter image description here
我的代码如下所示,问题出在deleteUser函数上:(仅添加了相关部分):
const UserContextProvider = (props) => {
const[users,setUsers] = useState([])
const addUser = (user) =>{
setUsers([...users,user])
}
const updateUser = (obj) =>{
deleteUser(obj.UserName)
addUser(obj)
}
const deleteUser = (us) =>{
//not working
setUsers(users.filter(u=>u.UserName!=us))
//working
let temp = [...users]
temp = temp.filter(el=>el.UserName!=us)
setUsers([...temp])
}
答案 0 :(得分:1)
请尝试...
const deleteUser = (us) =>{
setUsers(previousUsers => previousUsers.filter(u => u.UserName !== us))
}
答案 1 :(得分:1)
您的问题是您没有使用!==而是写了!=
const deleteUser = (us) =>{
//Add an equal sign it will work
setUsers(users.filter(u=>u.UserName!==us))