Reactjs 如果我在React';第二个参数是什么?

Reactjs 如果我在React';第二个参数是什么?,reactjs,react-hooks,Reactjs,React Hooks,例如,如果我将一个useffect挂钩作为useffect(()=>{…},[a,b])。如果[a,b]中的一个发生变化或者[a,b]都发生变化,useffect会被触发吗?当其中一个发生变化时,它会被触发。思考这个问题的方式是,你告诉我: a和b是我在这个效果中使用的东西,所以如果它们中的任何一个 更改后,“我的效果”将需要清理旧版本并使用更新的值重新执行 下面是一个简单的示例,可以让您看到行为: import React, { useState, useEffect } from "reac

例如,如果我将一个
useffect
挂钩作为
useffect(()=>{…},[a,b])
。如果[a,b]中的一个发生变化或者[a,b]都发生变化,
useffect
会被触发吗?

当其中一个发生变化时,它会被触发。思考这个问题的方式是,你告诉我:

a
b
是我在这个效果中使用的东西,所以如果它们中的任何一个 更改后,“我的效果”将需要清理旧版本并使用更新的值重新执行

下面是一个简单的示例,可以让您看到行为:

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

function App() {
  const [dependency1, setDependency1] = useState(1);
  const [dependency2, setDependency2] = useState(1);
  useEffect(
    () => {
      console.log("only dependency1", dependency1, dependency2);
    },
    [dependency1]
  );
  useEffect(
    () => {
      console.log("dependency1 and dependency2", dependency1, dependency2);
    },
    [dependency1, dependency2]
  );
  return (
    <div className="App">
      <button
        onClick={() => {
          setDependency1(prev => prev + 1);
        }}
      >
        Change dependency1
      </button>
      <button
        onClick={() => {
          setDependency2(prev => prev + 1);
        }}
      >
        Change dependency2
      </button>
      <button
        onClick={() => {
          setDependency1(prev => prev + 1);
          setDependency2(prev => prev + 1);
        }}
      >
        Change both
      </button>
    </div>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
import React,{useState,useffect}来自“React”;
从“react dom”导入react dom;
函数App(){
const[dependency1,setDependency1]=useState(1);
const[dependency2,setDependency2]=useState(1);
使用效果(
() => {
log(“仅dependency1”,dependency1,dependency2);
},
[依赖性1]
);
使用效果(
() => {
日志(“dependency1和dependency2”,dependency1,dependency2);
},
[依赖1,依赖2]
);
返回(
{
setDependency1(prev=>prev+1);
}}
>
更改依赖项1
{
setDependency2(prev=>prev+1);
}}
>
更改依赖项2
{
setDependency1(prev=>prev+1);
setDependency2(prev=>prev+1);
}}
>
两者都改变
);
}
const rootElement=document.getElementById(“根”);

ReactDOM.render(

不知道,所以我提出了申请,以后我强烈建议你也这样做。如果官方文件没有包含任何问题,你几乎肯定不会是唯一一个对你所想的事情感到疑惑的人,询问你使用的东西的制造者来改进文档对每个人都有很大的好处。或者,如果可能的话,自己测试一下:)但是当我们测试它时,它可能会给出一个答案,但你不能测试所有的边缘情况并确定它。为什么不在文档中添加一行来消除所有疑问。看起来当其中一个发生变化时它会被解雇。但是为什么文档不清楚呢?也许将来他们会清楚的。不过,谢谢你的帮助e明确的答案。React团队(生活和呼吸这些东西的人)很难预测人们会看到什么和不会看到什么。文档解释了数组的用途(从中可以推断行为应该是什么)。详细描述所有边缘案例会使您更难找到关键概念,并使事情看起来比实际情况更复杂。如果您认为文档应该改进,请提交一份包含有助于您理解这一点的更改的请求。