Estou usando o useState()
gancho do Deno Fresh, que é baseado no Preact. Em uma ilha eu tenho:
import { useState } from "preact/hooks";
export default function(){
const [state, setState] = useState('hi')
const str = 'a'
setState(str)
console.log(state)
}
Isso funciona bem. Mas se eu usar um objeto:
- const str = 'a'
- setState(str)
+ const obj = {a: 'a'}
+ setState(obj)
Então fica preso em um loop infinito. Por que é que?
Isso se resume à pergunta:
Preact ou React ou JS usa referências de objetos para comparar objetos. Portanto, dois objetos nunca serão iguais. O React não será capaz de otimizar a renderização, mesmo que os objetos sejam tecnicamente iguais e continuará renderizando novamente