我使用useState()
Deno Fresh 中的钩子,它基于 Preact。在一个岛上我有:
import { useState } from "preact/hooks";
export default function(){
const [state, setState] = useState('hi')
const str = 'a'
setState(str)
console.log(state)
}
这很好用。但如果我使用一个对象来代替:
- const str = 'a'
- setState(str)
+ const obj = {a: 'a'}
+ setState(obj)
然后就陷入了无限循环。这是为什么?
这归结为一个问题:
Preact 或 React 或 JS 使用对象引用来比较对象。因此,两个对象永远不会相等。即使对象在技术上是相等的并且将继续重新渲染,React 将无法优化渲染