javascript - 功能组件的哪些部分在重新渲染时运行?

标签 javascript reactjs react-hooks

我习惯于在 React 中对组件进行分类,但我正在尝试学习 React 钩子(Hook)。我知道在类组件中,有 render()方法。每当重新渲染类组件时,都会调用此方法。但是,对于具有状态的功能组件( react Hook ),没有这样的 render()方法。整个函数是否在每次重新渲染时运行?如果是这样,如果函数的每一行代码都运行,状态是否会重置回默认状态值?这是一个示例片段——例如,如果这个组件在我调用 setAnimal 时被重新渲染,那么重新渲染不会使动物重置回“狗”吗?

const SearchParams = () => {
  const [location, setLocation] = useState("Seattle, WA");
  const [animal, setAnimal] = useState("dog");

  return (
    <div className="search-params">
      <form>
        <label htmlFor="location">
          Location
          <input
            id="location"
            value={location}
            placeholder="Location"
            onChange={(e) => setLocation(e.target.value)}
          />
        </label>
        <label htmlFor="animal">
          Animal
          <select
            id="animal"
            value={animal}
            onChange={(e) => setAnimal(e.target.value)}
            onBlur={(e) => setAnimal(e.target.value)}
          >
            <option>All</option>
            {ANIMALS.map((animal) => (
              <option value={animal}>{animal}</option>
            ))}
          </select>
        </label>
        <button>Submit</button>
      </form>
    </div>
  );
};

最佳答案

重新运行整个函数。但是,useState() 存储状态并且不会被覆盖。当您执行 useState("SOMETHING") 时,您传递的值是初始默认值,并且只设置一次(也就是在它的第一次初始化时)。
React 会在重新渲染之间记住它的当前值,并为我们的函数提供最新的值。 - 直接来自 reactjs.org/docs/hooks-state.html
根据你的要求,我希望这能回答它!

关于javascript - 功能组件的哪些部分在重新渲染时运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65033140/

相关文章:

javascript - Angular.js 教程使用 Protractor 运行端到端测试

javascript - 未捕获 [不变违规 : Could not find "store" in either the context or props

javascript - React Container - 从任一 reducer 访问状态

reactjs - 在 typescript 中将 useState 作为 props 传递

javascript - React 错误边界不适用于 React

reactjs - useRef react Hook 的确切行为是什么?是否在每次重新渲染时重新创建对象?

javascript - 如何加密 HTML、CSS 和 JavaScript 以防止侵犯版权

javascript - Sequelize "model.associate"属性不再起作用?

javascript - 一行上有多个分号

reactjs - React typescript error 解析错误 : '>' expected