返回

动人青春,筑梦前行——记一次React学习历程

前端

缘起

听说每个好学生都会有个错题本,大概这就是我和大佬之差距吧。但是!现在!为了接近大佬,我也决定开始记录错题了!虽然学了一年前端才开始写博客,虽然直到找工作才开始写博客。但是,我相信,只要肯开始,就一定不晚!e ...应该,也许,可能不晚吧。

当然,今天要说的就是我刚开始学习React时的一个错误。问题是这样出现的:

import React, { useState } from 'react';

const MyComponent = () => {
  const [count, setCount] = useState(0);

  const handleClick = () => {
    setCount(count + 1);
  };

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={handleClick}>Click me</button>
    </div>
  );
};

export default MyComponent;

这是一个简单的React组件,它有一个状态变量count,一个按钮,点击按钮后会将count的值增加1。但是,当我运行这个组件时,发现count的值并没有变化。

寻根究底

我花了很长时间来调试这个错误,但一直没有找到原因。最后,我终于意识到,问题出在setCount函数中。

在React中,状态变量是只读的,不能直接改变。因此,如果想改变状态变量的值,必须使用setState函数。

import React, { useState } from 'react';

const MyComponent = () => {
  const [count, setCount] = useState(0);

  const handleClick = () => {
    setCount(prevState => prevState + 1);
  };

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={handleClick}>Click me</button>
    </div>
  );
};

export default MyComponent;

这样,当点击按钮时,count的值就会正确地增加1了。

学会教训

通过这次错误,我学会了以下几个教训:

  • 在React中,状态变量是只读的,不能直接改变。
  • 如果想改变状态变量的值,必须使用setState函数。
  • setState函数是异步的,这意味着它不会立即更新状态变量的值。
  • 如果需要在setState函数中使用前一个状态变量的值,可以使用箭头函数来获取它。

我希望我的经历能帮助其他React初学者避免同样的错误。