Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs React{useState,useEffect)。React使用单个“useEffect”渲染的频率是多少,它在回调中触发一个&“x27”设置状态&“x27”?_Reactjs_Use Effect_Use State - Fatal编程技术网

Reactjs React{useState,useEffect)。React使用单个“useEffect”渲染的频率是多少,它在回调中触发一个&“x27”设置状态&“x27”?

Reactjs React{useState,useEffect)。React使用单个“useEffect”渲染的频率是多少,它在回调中触发一个&“x27”设置状态&“x27”?,reactjs,use-effect,use-state,Reactjs,Use Effect,Use State,在这里,我期望3倍的渲染 从最初的坐骑 从唯一的“使用效果” 来自axios回调附带的“setValue(data)” 为什么只有两个渲染 const Main = () => { const [value, setValue] = useState(""); useEffect( () => { fetch() }, []); const fetch = () => { axios.get(url) .then(data => { s

在这里,我期望3倍的渲染

  • 从最初的坐骑
  • 从唯一的“使用效果”
  • 来自axios回调附带的“setValue(data)”
  • 为什么只有两个渲染

    const Main = () => {
     const [value, setValue] = useState("");
    
     useEffect( () => {
        fetch()
      }, []);
    
    const fetch = () => {
      axios.get(url)
      .then(data => {
        setValue(data)
      });
    };
    
    console.log("before render");  // 2x "before render"
    
    return (...);
    };
    
    ReactDOM.render(<Main />, document.getElementById("root"));
    
    const Main=()=>{
    const[value,setValue]=useState(“”);
    useffect(()=>{
    fetch()
    }, []);
    常量fetch=()=>{
    获取(url)
    。然后(数据=>{
    设定值(数据)
    });
    };
    console.log(“渲染前”);//2x“渲染前”
    回报率(…);
    };
    render(,document.getElementById(“根”));
    
    useEffect不会触发重新渲染,它只调用为该效果提供的回调。只有状态修改会导致重新渲染。

    useEffect不会触发重新渲染,它只调用为该效果提供的回调。只有状态修改会导致重新渲染。

    只会发生2次渲染-

    1- From the initial mount.
    2- From the 'setValue(data)', which comes with the axios-callback.
    
    与setValue和类似的钩子一样,它们不会立即重新呈现组件。它们可能会批处理更新或将更新推迟到以后。因此,在更新之后,您只能获得一个重新呈现器 最新的设置值调用


    useffect
    在被告知之前不会触发重新渲染。

    只会发生2次渲染-

    1- From the initial mount.
    2- From the 'setValue(data)', which comes with the axios-callback.
    
    与setValue和类似的钩子一样,它们不会立即重新呈现组件。它们可能会批处理更新或将更新推迟到以后。因此,在更新之后,您只能获得一个重新呈现器 最新的设置值调用


    useffect
    在被告知之前不会触发重新渲染。

    简单快速。谢谢。我还有一个问题,你可以帮助我:为什么我会得到3次渲染,当:-我删除了“useffect”中的“[]”并且我的axios响应总是相同的(-->状态的内容没有变化)@coasterrel Useffect将在组件渲染时运行,这可能比您想象的要多。知识1和知识2的一些链接-“简单快速。谢谢。很难。我还有一个问题,您可以帮助我:为什么我会得到3次渲染,当:-我删除了“Useffect”中的“[]”时,我的axios响应总是一样的(->状态的内容没有变化)。@coasterrel Useffect将在组件渲染时运行,这可能比您想象的要多。知识1和2的一些链接-`@Viktor\u W谢谢。我还有一个问题,您可以帮助我:为什么我得到3个渲染,当:-我删除'[]'in'useffect'-我的axios响应总是相同的(->状态内容没有变化)。不确定。一个理论是:Axios返回一个对象,包含statuscode和类似的东西,对吗?假设res1和res2是同一Axios请求的响应。然后,
    res1==res2
    将始终为假,因为它们是不同的对象。因此,当React进行比较时,它认为您已分配了一个新值。但是
    res1.data==res2.data
    将为真。但是,这不应该在3次渲染时停止,而应该重新渲染infinitely@Viktor_W谢谢。我还有一个问题,你可以帮我:为什么我得到3个渲染,当:-我删除了“useEffect”中的“[]”并且我的axios响应总是相同的(->状态的内容没有变化)。不确定。一个理论是:Axios返回一个对象,包含statuscode和类似的东西,对吗?假设res1和res2是同一Axios请求的响应。然后,
    res1==res2
    将始终为假,因为它们是不同的对象。因此,当React进行比较时,它认为您已分配了一个新值。但是
    res1.data==res2.data
    应该是真的。但是,这不应该在3次渲染时停止,而应该无限次地重新渲染