使用bubel包的BUTTLOAD来处理旧版React项目(最近升级到v16),
基本上,我正在尝试为按钮动态分配onClick
函数。但是没有评估对象属性访问器。相反,我只是收到一个错误,您可以在下面看到。
这是了解此问题的最低代码。
const myVariable = 'someFunction';
const MyComponent = props =>
<button
onClick={props[myVariable]('some value')}
/>
<MyComponent
someFunction={value => () => console.log(value)}
/>
TypeError: props[myVariable] is not a function
就像,为什么表达式甚至没有在错误中求值?
答案 0 :(得分:0)
由于传递的prop不是函数(显然),可能发生此错误TypeError: props[myVariable] is not a function
。
您需要提供一个真实的示例或您的所有babel配置,因为这样,我们可以知道babel是否存在问题或您传递的道具错误。
此外,如果您像onClick={props[myVariable]('some value')}
那样传递,则在解释时间时,它将立即执行该功能。那时props[myVariable]
可以是其他东西,也可以是未定义的,这就是您得到错误的方式。
正确的方法是像onClick={() => props[myVariable]('some value')}