Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.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
如果我们自己使用普通JavaScript编写ReactJS useState(),该如何编写?_Javascript_Reactjs - Fatal编程技术网

如果我们自己使用普通JavaScript编写ReactJS useState(),该如何编写?

如果我们自己使用普通JavaScript编写ReactJS useState(),该如何编写?,javascript,reactjs,Javascript,Reactjs,它实际上将如何实施?如果我们能够使用 const [count, setCount] = useState(0); 而且count能够在第一次获得0,但在以后的调用中获得更晚的状态,如果我们必须使用普通JavaScript实现useState(),该如何实现?问题是,useState()并不是所有函数都通用的。在每个函数中,即使函数A和B都使用useState(0),它也可以有单独的状态 我认为以下几点将非常接近,尽管我不知道这是否几乎相等: function A() { printSom

它实际上将如何实施?如果我们能够使用

const [count, setCount] = useState(0);
而且
count
能够在第一次获得
0
,但在以后的调用中获得更晚的状态,如果我们必须使用普通JavaScript实现
useState()
,该如何实现?问题是,
useState()
并不是所有函数都通用的。在每个函数中,即使函数A和B都使用
useState(0)
,它也可以有单独的状态

我认为以下几点将非常接近,尽管我不知道这是否几乎相等:

function A() {
  printSomething('hi');
}

function B() {
  printSomething('hi');
}

A()  // => 'hi'
A()  // => 'I know you are calling me more than one time'
A()  // => 'I know you are calling me more than one time'
B()  // => 'hi'
B()  // => 'I know you are calling me more than one time'

React按照钩子在第一次渲染时被调用的顺序跟踪钩子。这也是为什么必须始终以相同的顺序无条件调用钩子的原因。除了“原则”之外,我希望看到它是如何在实际代码中编写的。react是开源的,所以请继续在repo中查找它。在我的第一条注释中添加react还跟踪当前呈现的组件。因此它知道a)哪个组件被渲染,b)钩子被调用的顺序。因此,当树中某个已定义位置的组件渲染时,调用第三个钩子时,它假定该钩子与第一次渲染该组件时调用第三个钩子的钩子相同。