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

我想像这样创建一个代理。正如文档似乎暗示的那样,我使用了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 here

return nextState;

相反,它返回一个布尔值。


有没有办法在返回值之前获取代理的“下一个值”?


潇湘沐
浏览 86回答 1
1回答

隔江千里

文档澄清了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;    }  });}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript