【发布时间】:2019-09-20 06:43:30
【问题描述】:
我在父组件上有一个带有用于浏览按钮的子组件的页面,带有一个回调,我使用浏览的文件设置状态。
由于某种原因,由于传递给更高父组件的不同回调,未使用附加文件设置状态。
如果我删除第二个回调 this.props.handleChange('attachment', file); 一切正常。知道为什么吗? (第二次回调没有问题,没有错误等)
Attachment页面:
export default class Attachment extends React.Component {
state = {
attachment: {},
};
handleAddAttachment = file => {
this.setState({ attachment: file });
this.props.handleChange('attachment', file); // this causes the previous line to not working.
};
render() {
const { attachment } = this.state;
return (
<Fragment>
<div>
<div>
Do you have
<br />
something to <LineBreak />
show me?
</div>
<div css={attach}>Upload attachments here</div>
<AttachmentButton handleAddAttachment={this.handleAddAttachment} />
<AttachedFile attachment={attachment} />
</div>
</Fragment>
);
}
}
父组件上的makeHandleChange方法:
makeHandleChange = (pageName, change) => {
this.setState({
ticket: { ...this.state.ticket, [pageName]: change },
});
};
【问题讨论】:
-
为什么不让父通过state控制附件,作为prop传递给子呢?
-
this.props.handleChange 有什么作用?它的背景是什么?
-
@user3378165 请看下面我的回答。
-
@Avanthika,我在问题中添加了
this.props.handleChange的调用方法 -
请也分享您的父代码。
标签: reactjs