我可以在react函数组件中使用“ let”吗?

时间:2019-10-24 15:41:38

标签: javascript reactjs react-hooks

我目前正在学习React。

我可以在功能组件中使用“ let”代替“ useState”吗?

const Func = () => {
  let fruit = "banana";

  const changeFruit = () => {
    fruit = "apple"
  };

  changeFruit();
}
const Func = () => {
  const [fruit, setFruit] = useState("banana");

  const changeFruit = () => {
    setFruit("apple");
  };

  changeFruit();
}

2 个答案:

答案 0 :(得分:1)

这不是功能组件,因为功能组件必须返回React元素。

如果它将是一个功能组件,并且您在返回Element之前同步更改了变量 ,那就很好了:

const Func = () => {
  let fruit = "banana";

  const changeFruit = () => {
    fruit = "apple"
  };

  changeFruit();

  return <>{fruit}</>; // displays "apple"
};

如果您异步进行更改,例如

  setTimeout(changeFruit, 1000);

然后在变量更改后组件将不会重新显示。那通常不是你想要的。如果您useState并调用setFruit函数,则该组件将重新呈现。

答案 1 :(得分:1)

我可以在函数组件中使用“ let”代替“ useState”吗?

答案是否定的,您不能使用let代替state。您的组件不会重新渲染,这就是状态的全部

请考虑使用React文档,以帮助您了解React中状态的概念

希望有帮助

相关问题