Ⅰ、前言
- 我们知道
React中 , 要想修改 「状态」 => 必须要 - 「state , setState」 = useState() 中
- 「setState」 去修改 => 「state」
- 那么如果用
Proxy=> 去改造 useState,那么 「摸鱼的时间」又增加啦 ?

Ⅱ、proxy 改造 useState
- 首先我们直接修改状态,页面是无法直接更新的;
- 但是
proxy,可以监听到; - 监听到的同时,再触发
setState=> 修改setState - 同时再次赋予
proxy,让下一次proxy正常监听到;
下面我们实例去看 👇
改造 👇
export default function Reactive(obj) {
const [value, setValue] = useState(setProxy(obj))
function setProxy(value) {
return new Proxy( value ,{
get:Reflect.get,
set(proxy,key,value,reciver){
setValue(proxy)
return Reflect.set(proxy,key,value,reciver)
}
})
}
return value
}
使用 👇
import useReactive from './proxyState'
export default function Index() {
const obj = useReactive({ num: 0 })
return (
<div>
<button onClick={()=>{ obj.num-- }} >减少</button>
<span> { obj.num } </span>
<button onClick={()=>{ obj.num++ }} >增加</button>
</div>
)
}
- 直接修改 , 让
proxy监听自动setState; - 这样改造和
vue3的reactive API就很像了 ;



















