| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- import { ComponentInstance } from './component'
- export const RenderProxyHandlers = {
- get(target: ComponentInstance, key: string) {
- const { state, props } = target
- if (state.hasOwnProperty(key)) {
- return state[key]
- } else if (props.hasOwnProperty(key)) {
- return props[key]
- } else {
- switch (key) {
- case '$state':
- return target.state
- case '$props':
- return target.props
- case '$attrs':
- return target.attrs
- case '$slots':
- return target.slots
- case '$refs':
- return target.refs
- default:
- break
- }
- }
- },
- set(target: ComponentInstance, key: string, value: any): boolean {
- const { state } = target
- if (state.hasOwnProperty(key)) {
- state[key] = value
- return true
- } else {
- if (__DEV__) {
- if (key[0] === '$') {
- // TODO warn attempt of mutating public property
- } else if (target.props.hasOwnProperty(key)) {
- // TODO warn attempt of mutating prop
- }
- }
- }
- return false
- }
- }
|