useState hook如何知道react中的调用上下文

Posted

技术标签:

【中文标题】useState hook如何知道react中的调用上下文【英文标题】:How does useState hook know the calling context in react 【发布时间】:2021-05-05 11:20:58 【问题描述】:

我正在从使用类组件切换到使用 React 中的功能组件。我通读了他们的文档,我想知道useState 钩子是如何工作的。

在他们的FAQ 中,他们与我提出的问题相同,即每个组件都有一个内部列表:用于存储状态变量,并且useState 知道用于存储状态变量的调用组件。

我想知道useState 是如何知道调用组件的,因为除了初始状态值之外我们不传递任何其他内容。

有人可以举个例子来解释一下吗?我真的很想知道这是如何工作的。

【问题讨论】:

@user67 这解释了如何使用useState。我想知道它如何设法访问该内部列表 【参考方案1】:

useState 是 react 提供的状态钩子。它返回一个“对”当前状态值和一个更新它的函数,还接受一个参数,该参数是您要为状态变量分配的初始值。 在上面的示例中,count 是状态变量,setCount 是更改值的函数,0 是我们分配给 count 的默认值。在这个例子中,我们使用计数器作为整数值只是为了演示,但我们可以使用任何其他类型,如字符串、对象、数组等,也可以使用在单个组件中定义的多个状态变量。

import React,  useState  from 'react;
const MyComponent = (props) => 
const [count, setCount] = useState(0)
return (
    <div>
        <p>Count: count</p>
        <button onClick=() => setCount(count + 1)>
            Increment Count
        </button>
        <button onClick=() => setCount(count - 1)>
            Decrement Count
        </button>
    </div>
)

export const MyComponent;

【讨论】:

感谢回答但我想知道useState是如何知道对应的调用组件【参考方案2】:
Assuming that seterInClass is an arrow function define to set the value of the variable username.   
 setterInClass = (val) =>
            this.setState(username:val);
        
        in a class the initialization is through this.state
        in a functional it is through the userState which acts as a glue.
         this.state = username:'' + setterInClass is equivalent to const [username, setUsername] = useState('').
        Meaning useState is establishing a relation of setter to the variable username, after initializing it; And avoid us to write this.state to get the value of any variable or having top write const username = this.state; 
  So it is cleaner, less code for us and make functionals component looks cute

【讨论】:

【参考方案3】:

"useState" 返回一个包含两个项目的数组。在第一个索引中,您拥有状态本身,在第二个索引中,您将获得处理该状态的函数。 这样做你就会明白:

const useStateArray = useState();
console.log(useStateArray[0]);
console.log(useStateArray[1]);

【讨论】:

感谢您的回答但这并没有提供答案。我问useState怎么知道对应的组件。 @Clarke 那是你的答案。检查此链接:medium.com/the-guild/…

以上是关于useState hook如何知道react中的调用上下文的主要内容,如果未能解决你的问题,请参考以下文章

在 React 中,如何使用 hook useState 来设置数据?

React hooks - useState() 中的状态在路由更改时不会重置

react源码debugger-各个hooks的逻辑实现(useState和useEffect)

react源码debugger-各个hooks的逻辑实现(useState和useEffect)

react源码debugger-各个hooks的逻辑实现(useState和useEffect)

React Hooks useEffect useState userContext userReducer应用项目