reactjs 数组推送数组中已有的元素,尽管!arry.includes

qyswt5oh  于 2023-01-08  发布在  React
关注(0)|答案(1)|浏览(108)

我正在尝试构建一个需要目录的应用程序。每次我更新组件时,它都会将数据再次推入数组,创建多个副本。我尝试通过添加!arry.includes来解决这个问题,但这并不能阻止它添加另一个数据示例。

const Directory = () => {
  const [searchResults, setSearchResults] = useState([]);
  const [loading, setLoading] = useState(false);
  const { currentUser } = useContext(AuthContext);

  useEffect(() => {
    setLoading(true);
    const data = async () => {
      const q = query(collection(db, "users"), where("type", "==", "doctor"));
      const querySnapshot = await getDocs(q);
      querySnapshot.forEach((doc) => {
        const data = doc.data();
        if (!searchResults.includes(data)) {
          searchResults.push(data);
        }
      });
      setLoading(false);
    };
    data();
  },[]);
  console.log(searchResults);
42fyovps

42fyovps1#

看起来您试图在这里比较对象,但它不适用于array.includes()方法。
在javascript中

const user1 = {name : "nerd", org: "dev"};
const user2 = {name : "nerd", org: "dev"};
user1 == user2; // is false

您需要搜索更具体的内容或尝试Comparing Objects。无论哪种方式,您尝试做的事情都很棘手,您可能需要探索lodash或其他方法来解决它

相关问题