我偶然发现了一件有趣的事。当我创建一个新对象为一个方法设置一个新键时,它在试图访问(使用)它时不能正确处理它。请看下面的例子:
const cases = [
{ instance: instance.mydecorator, triggerEffects: useMyDecorator },
];
,然后我想循环如下:
cases.forEach(({ instance, triggerEffects }) => {
instance = [
Story => {
triggerEffects();
return <Story />;
},
];
});
上面的例子不起作用:instance != instance。
有效的方法是:
const cases = [
{ instance: instance, triggerEffects: useMyDecorator },
];
cases.forEach(({ instance, triggerEffects }) => {
instance.mydecorator = [
Story => {
triggerEffects();
return <Story />;
},
];
});
你的代码问题是你在foreach回调输入参数中使用的解构-这部分=>cases.forEach(({ instance, triggerEffects })...
。当你这样做的时候,你解构了数组元素,当你看你的数组声明实例指向一些其他的实例对象,所以在解构{ instance, triggerEffects }
实例将指向右边的实例从你的数组声明-你基本上访问(用这个标记)到const cases = [ { instance: instance(THIS ONE), triggerEffects: useMyDecorator }, ];
,而不是你所期望的左边的一个。
cases.forEach(element => {
element.instance = [
Story => {
element.triggerEffects();
return <Story />;
},
];
});