相关疑难解决方法(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万
查看次数

在使用挂钩时,React是否批量状态更新功能?

对于类组件,this.setState如果在事件处理程序内部则调用批处理.但是如果在事件处理程序之外更新状态并使用'useState'钩子会发生什么?

function Component() {
  const [a, setA] = useState('a');
  const [b, setB] = useState('b');

  function handleClick() {
    Promise.resolve().then(() => {
      setA('aa');
      setB('bb');
    });
  }

  return <button onClick={handleClick}>{a}-{b}</button>
}
Run Code Online (Sandbox Code Playgroud)

它会useState马上渲染吗?或者它会是aa - bb然后aa - b呢?

reactjs react-hooks

28
推荐指数
4
解决办法
4663
查看次数

React 钩子函数依赖

我发现自己处于一个奇怪的境地。我正在实施一个钩子,但我无法实现我想要的。

我有这样的事情:

const appHook = props => {
  const [foo, setFoo] = React.useState([]);
  const [bar, setBar] = React.useState([]);

  React.useEffect(() => {
    setFoo(getFoo(props.fooList, props.fooId));
    setBar(getBar(foo.listToFilter));
  }, [props.fooId]);

  const getCurrentBlockTrade = (arrayToFilter, number) =>
    arrayToFilter.filter(array => array.id === number);

  const getSubOutList = (...) => {
   ...
  };

return (<div>something</div>)
}
Run Code Online (Sandbox Code Playgroud)

我的问题是函数 setFoo 被正确执行,所以 foo state 是一个新数组,但是取决于 foo 状态的 setBar 接收一个空数组。基本上 setBar 在 setFoo 完成之前执行,因此 getBar 函数接收一个空数组。

管理这种依赖的正确方法是什么?

谢谢,F。

javascript reactjs react-hooks

3
推荐指数
1
解决办法
2718
查看次数

useState React hook 的奇怪行为

我在useStateReact 钩子上遇到了一些非常奇怪的行为。在以下代码中(https://codesandbox.io/s/purple-bush-nb5uy?file=/src/index.js):

function App() {
  return (
    <div className="App">
      <Comp flag={true} />
    </div>
  );
}
const Comp = ({ flag }) => {
  const [running, setRunning] = useState(false);
  const [jumping, setJumping] = useState(false);
  console.log('zero');
  
  const setBoth = () => {
    setRunning(true);
    console.log('one');
    setJumping(true);
    console.log('two');
  };

  return (
    <>
      {"running: " + running}
      {"jumping: " + jumping}
      <button onClick={() => setBoth()}>setboth</button>
    </>
  );
};
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
Run Code Online (Sandbox Code Playgroud)

当我们点击 时button,我们会在控制台中得到以下序列:

one
two …
Run Code Online (Sandbox Code Playgroud)

reactjs react-hooks

1
推荐指数
1
解决办法
266
查看次数

标签 统计

react-hooks ×4

reactjs ×4

javascript ×2