【发布时间】:2018-05-29 03:22:05
【问题描述】:
我有一个组件数组,它们都是我通过道具注入到它的父级的单独视图
const steps =
[ <StepOne wizardContext={shippingObj.from} onAction={this.handleFrom}/>,
<StepTwo wizardContext={shippingObj.to} onAction={this.handleFrom} />,
<StepThree wizardContext={shippingObj.weight} onAction={this.handleFrom} />,
<StepFour wizardContext={shippingObj.shippingOption} onAction={this.handleFrom} />,
<Confirm wizardContext={shippingObj} onAction={this.handleFrom} />
]
<Wizard steps={steps}/>
在向导组件中,我根据实际步骤呈现每个步骤
{this.props.steps[this.state.compState]}
在向导组件中我也有一个方法
handleFrom(val) {
let state = val.stage,
key = Object.keys(val)[0];
this.setState({
wizardContext: { ...this.state.wizardContext, [key]: val[key]}
})
}
然而 onAction 是未定义的,这意味着它无权访问“this”
如果我将它们中的每一个单独包含在父向导组件中,我确实可以访问它并且它可以工作
/*THIS WORKS */
switch (this.state.compState) {
case 1:
return <StepOne onAction={this.handleFrom} data={this.state.wizardContext.from} />
case 2:
return <StepTwo onAction={this.handleFrom} data={this.state.wizardContext.to} />
case 3:
return <StepThree onAction={this.handleFrom} data={this.state.wizardContext} />
case 4:
return <StepFour onAction={this.handleFrom} data={this.state.wizardContext.shippingOption} />
case 5:
return <Confirm shippingLabel={this.state.wizardContext} labelkeys={this.shippingKeys} />
}
但是我想将步骤与实际向导分离
如果子组件是一个组件数组,是否有办法从子组件访问此方法或父方法?有没有更清洁的方法来做到这一点? 组件将呈现只是无法访问道具中的“this” 任何建设性的反馈表示赞赏
【问题讨论】:
标签: javascript arrays reactjs components