React
中 , 要想修改 「状态」 => 必须要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
就很像了 ;