【发布时间】:2022-10-04 15:55:55
【问题描述】:
我很想知道哪一个表现更好。其中两个示例在没有警告的情况下正确运行,但是在没有 useState 的情况下在 react 中声明可变变量是否可以接受? (使用 React 查询获取数据的示例)
例 1:
let flexibleName = ""
const { data, status } = useQuery("users", fetchUsers)
if(data) flexibleName = "TEST DATA"
return <div>{flexibleName}</div>
例 2:
const [flexibleName, setFlexibleName] = useState("")
const { data, status } = useQuery("users", fetchUsers)
useEffect(()=>{
if(!data) return
setFlexibleName("TEST DATA")
},[data])
return <div>{flexibleName}</div>
【问题讨论】:
-
这会起作用,蚂蚁在性能的情况下,有propablo不是一个大问题。但是您的变量不会通过重新渲染被记住,并且您在用户交互中丢失了存储在其中的所有数据,如果您更改它,它将不会在 html 中看到,因为它不会导致重新渲染。
-
在你的ex2中,你设置错了,重新渲染后也会丢失,因为你没有打电话给
setFlexibleName("TEST DATA")
标签: reactjs react-hooks