我想像这样创建一个代理。正如文档似乎暗示的那样,我使用了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;
}
});
}
添加回答
举报
0/150
提交
取消