尽管有标题相似的帖子,但它们都不相关或没有回答所发布的问题。
我在另一个页面中有一个这样的组件:
<SomeComponent aParticularProp={(arg) => {this.someFunction(arg)}} />
这是SomeComponent的简化版本:
class SomeComponent extends React.Component{
constructor(props){
super(props);
this.state = {someState: "test"};
}
something(){
return (
<SpecialButton
onClick={() => {this.props.someFunction(this.state.someState)}}
/>
)
}
render () {
return (
{this.something()}
);
}
}
我为什么会收到“ TypeError:_this2.props.someFunciton不是函数”?
答案 0 :(得分:0)
您正在传递aParticularProp作为道具,而不是SomeFunction ... 因此,在SomeComponent中,您可以引用this.props.aParticularProp。
父组件中的this.someFunction应该在父组件中定义。
答案 1 :(得分:0)
如果您尝试将功能从父级组件传递到子组件并维护原始上下文,则可以通过以下两种方法将其绑定到该组件:
<SomeComponent someFunction={this.someFunction.bind(this)} />
OR ,方法如下:someFunction = args => {}
更何况this2.props.someFunction is not a function
,通过像这样someFunction={(arg) => {this.someFunction(arg)}}
向下传递函数,您实际上并没有将函数传递给子组件,而是调用了函数并返回结果。