在React的useState中,为什么不显示第一个console.log,而显示第二个console.log?

0yg35tkg  于 2023-02-24  发布在  React
关注(0)|答案(2)|浏览(99)

这里,这是一个非常简单的应用程序。我只希望它在这里记录“是”,而不是“不,数组是别的东西”。

import React, { useEffect, useState } from "react";
import { View } from "react-native";

function Test(props) {
  const [array, setArray] = useState([1, 2, 3]);

  if (array === [1, 2, 3]) {
    console.log("Yes");
  } else {
    console.log("No, array is something else");
  }

  return <View></View>;
}

export default Test;

然而,它实际上记录了第二个“不,数组是别的”。因为状态[1,2,3]的数组正好等于[1,2,3],我以为那只会显示第一个console.log(“是”)
我不知道这是怎么回事,还是我错过了什么?如果有人能给予我一些建议就好了。先谢谢你了

nwlls2ji

nwlls2ji1#

这个也行

if (array.toString() == [1, 2, 3].toString()) {
    console.log('Yes1');
  } else {
    console.log('No, array is something else');
  }
2lpgd968

2lpgd9682#

在javascript中,即使两个数组相等,[1, 2, 3]===[1, 2, 3]也会返回false。
试试这个

if (JSON.stringify(array).toString() == JSON.stringify([1, 2, 3]).toString()) {
    console.log('Yes1');
  } else {
    console.log('No, array is something else');
  }

它将返回true

相关问题