【发布时间】:2021-04-12 12:41:58
【问题描述】:
我正在处理一个包含两个组件的 React 和 MaterialUI 清单,一个包含数据,另一个编辑它,但是出现了调用函数 (handleDeleteChip()) 传递的问题on with props,不会被执行。
父组件:
export default class CheckList extends React.Component {
constructor() {
super();
this.state = {
taskData: {}
}
this.handleDeleteChip = this.handleDeleteChip.bind(this)
handleDeleteChip = (chipToDelete) => () => {
let obj = this.state.taskData
delete obj[chipToDelete]
this.setState({taskData: obj})
};
render() {
return (
<div>
{
<AddToDoComponent handleDeleteChip={this.handleDeleteChip}/>
}
</div>
子组件:
class AddToDoComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
chipData: props.taskData,
updateCondition: true
}
this.deleteHandler = this.deleteHandler.bind(this)
}
deleteHandler(chipToDelete){
this.props.handleDeleteChip(chipToDelete)
}
【问题讨论】:
-
你能展示你如何在 child 中使用函数 deleteHandler 吗?
-
你确定它没有被调用吗?在我看来,假设它被调用,它不会导致重新渲染,因为你正在直接改变状态。
-
@Arthur
const chip = (<div> {Object.keys(this.state.chipData).map((k, i) => ( <p key={i}> <Chip style={{float: "left", margin: 5}} label={k} onDelete={() => {this.deleteHandler({k})}} /> </p> ))} </div>)
标签: javascript reactjs react-router material-ui