为了账号安全,请及时绑定邮箱和手机立即绑定

在设置值后可靠地运行代理陷阱

在设置值后可靠地运行代理陷阱

潇湘沐 2023-03-18 16:16:45
我想像这样创建一个代理。正如文档似乎暗示的那样,我使用了Reflect.set。function createStore<T>(reducer: Reducer<T>, initialState: T) {  const store = new Proxy(initialState, {    set(target, key, value) {      console.log('Trap has been activated');      return Reflect.set(target, key, value);    }  });}现在当我设置一个字段时,它确实有效地触发了这个陷阱。但是,我想在设置值后触发此陷阱。我尝试了这个,希望Reflect.set返回我的下一个状态:const nextState = Reflect.set(target, key, value);// my code herereturn nextState;相反,它返回一个布尔值。有没有办法在返回值之前获取代理的“下一个值”?
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

文档澄清了Reflect.set一些事情:

返回值
一个布尔值,指示设置属性是否成功。

如果你想得到设置后的值,你可以使用Reflect.get(target, key)或直接转到目标(target[key]):

function createStore<T>(reducer: Reducer<T>, initialState: T) {

  const store = new Proxy(initialState, {

    set(target, key, value) {

      console.log('Trap has been activated');

      const retVal = Reflect.set(target, key, value);

      console.log(`New value: ${Reflect.get(target, key)}`);

      return retVal;

    }

  });

}


查看完整回答
反对 回复 2023-03-18
  • 1 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信