相关疑难解决方法(0)

useState设置方法不能立即反映更改

我正在尝试学习钩子,而useState方法使我感到困惑。我正在将初始值分配给数组形式的状态。即使使用spread(...)或,useState中的set方法对我也不起作用without spread operator。我在另一台PC上制作了一个API,我正在调用它并提取要设置为状态的数据。

这是我的代码:

import React, { useState, useEffect } from "react";
import ReactDOM from "react-dom";

const StateSelector = () => {
  const initialValue = [
    {
      category: "",
      photo: "",
      description: "",
      id: 0,
      name: "",
      rating: 0
    }
  ];

  const [movies, setMovies] = useState(initialValue);

  useEffect(() => {
    (async function() {
      try {
        //const response = await fetch(
        //`http://192.168.1.164:5000/movies/display`
        //);
        //const json = await response.json();
        //const result = json.data.result;
        const result = [
          {
            category: …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-hooks

46
推荐指数
9
解决办法
2万
查看次数

为什么 useEffect 不能在 return 语句中访问我的状态变量?

我不明白为什么我的useEffect()React 函数无法访问我的组件的状态变量。当用户放弃在我们的应用程序中创建列表并导航到另一个页面时,我试图创建一个日志。我正在使用useEffect() return复制componentWillUnmount()生命周期方法的方法。你能帮我吗?

代码示例

  let[progress, setProgress] = React.useState(0)

  ... user starts building their listing, causing progress to increment ...

  console.log(`progress outside useEffect: ${progress}`)
  useEffect(() => {
    return () => logAbandonListing()
  }, [])
  const logAbandonListing = () => {
    console.log(`progress inside: ${progress}`)
    if (progress > 0) {
      addToLog(userId)
    }
  }
Run Code Online (Sandbox Code Playgroud)

预期行为

代码将达到addToLog(),导致记录此行为。

观察到的行为

这就是当用户在他们的列表中输入一些内容,导致progress增加,然后离开页面时发生的情况。

  • useEffect()方法完美运行,并触发该logAbandonListing()功能
  • 第一个console.log()(上面useEffect)记录了大于 0 的progress状态
  • 第二个console.log()用于日志0 …

reactjs next.js use-effect

7
推荐指数
2
解决办法
5780
查看次数

标签 统计

reactjs ×2

javascript ×1

next.js ×1

react-hooks ×1

use-effect ×1