2 回答

TA貢獻1826條經(jīng)驗 獲得超6個贊
我認為更有意義的是將item和params作為道具實際傳遞給ImageComponent. 然后通過孩子使用這些道具。
// parent
removeImage(event, item, params){
console.log('deleted', item, params)
event.stopPropagation();
}
render() {
const props = this.props;
const params = props.match.params;
const item = props.item;
const images = props.images;
var i = images.map(image => {
return <ImageComponent remove={this.removeImage} params={params} item={item}/>
})
// child
internalRemove = event => {
this.props.remove(event, this.props.item, this.props.params);
}
<i className="fas fa-trash remove" onClick={this.internalRemove} />
假設孩子是一個類組件,那應該可以工作。

TA貢獻1864條經(jīng)驗 獲得超6個贊
只需嘗試將remove道具直接傳遞給子 onClick 事件:
class ImageComponent extends React.Component {
render() {
return (
<button className="square" onClick={this.props.remove}>
Click me
</button>
);
}
}
class Parent extends React.Component {
removeItem (event, someValue) {
console.log('deleted', someValue)
console.log(event.target)
}
render() {
const {props} = this
const test = props.customProps
var i = [1,2].map(image => {
return <ImageComponent remove={(e) => this.removeItem(e, test)}/>
})
return (
<div>
{i}
</div>
);
}
}
class GrandParent extends React.Component {
render() {
return (
<Parent customProps={'test'} />
);
}
}
ReactDOM.render(
<GrandParent />,
document.getElementById('react')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id='react'></div>
添加回答
舉報