在 React 中确认 Window
Confirm Window in React
我有以下代码:
renderPosts() {
return _.map(this.state.catalogue, (catalogue, key) => {
return (
<div className="item col-md-3" key={key} id={key}>
<img src={this.state.catalogue[key].avatarURL} height={150} with={150}/>
<h3>{catalogue.marque}</h3>
<h4>{catalogue.numero}</h4>
<h4>{catalogue.reference}</h4>
<p>{catalogue.cote}</p>
<div className="text-center">
<button className="btn btn-danger" onClick={() => {if(window.confirm('Delete the item?')){this.removeToCollection.bind(this, key)};}}>Supprimer</button>
</div>
</div>
)
})
}
我也有这个功能:
removeToCollection(key, e) {
const item = key;
firebase.database().ref(`catalogue/${item}`).remove();
}
当我在 "onclick" 按钮中使用没有确认 window 的功能时,代码运行良好。但是当我想使用确认 window 时,当我点击我的按钮时会显示确认 window,但我的项目没有被删除。
有什么想法吗?
感谢您的帮助!
基本上您是在绑定函数而不是调用它...您应该事先绑定,最好是在构造函数中...然后调用它。
试试这个:
renderPosts() {
this.removeToCollection = this.removeToCollection.bind(this);
return _.map(this.state.catalogue, (catalogue, key) => {
return (
<div className="item col-md-3" key={key} id={key}>
<img src={this.state.catalogue[key].avatarURL} height={150} with={150}/>
<h3>{catalogue.marque}</h3>
<h4>{catalogue.numero}</h4>
<h4>{catalogue.reference}</h4>
<p>{catalogue.cote}</p>
<div className="text-center">
<button className="btn btn-danger" onClick={() => {if(window.confirm('Delete the item?')){this.removeToCollection(key, e)};}}>Supprimer</button>
</div>
</div>
)
})
}
你只是在绑定函数,并没有调用它。
使用 bind
并调用 bind
ed 函数的正确语法。
if (window.confirm("Delete the item?")) {
let removeToCollection = this.removeToCollection.bind(this, 11);//bind will return to reference to binded function and not call it.
removeToCollection();
}
或者您也可以在不绑定的情况下这样做。
if (window.confirm("Delete the item?")) {
this.removeToCollection(11);
}
如果 this 是 removeToCollection
中的关注点,那么使用 arrow function
来定义它。
removeToCollection=(key)=> {
console.log(key);
}
我做了和下面一样的-
I have a smart(class) component
<Link to={`#`} onClick={() => {if(window.confirm('Are you sure to delete this record?')){ this.deleteHandler(item.id)};}}> <i className="material-icons">Delete</i> </Link>
我定义了一个调用删除端点的函数-
deleteHandler(props){
axios.delete(`http://localhost:3000/api/v1/product?id=${props}`)
.then(res => {
console.log('Deleted Successfully.');
})
}
这对我有用!
我有以下代码:
renderPosts() {
return _.map(this.state.catalogue, (catalogue, key) => {
return (
<div className="item col-md-3" key={key} id={key}>
<img src={this.state.catalogue[key].avatarURL} height={150} with={150}/>
<h3>{catalogue.marque}</h3>
<h4>{catalogue.numero}</h4>
<h4>{catalogue.reference}</h4>
<p>{catalogue.cote}</p>
<div className="text-center">
<button className="btn btn-danger" onClick={() => {if(window.confirm('Delete the item?')){this.removeToCollection.bind(this, key)};}}>Supprimer</button>
</div>
</div>
)
})
}
我也有这个功能:
removeToCollection(key, e) {
const item = key;
firebase.database().ref(`catalogue/${item}`).remove();
}
当我在 "onclick" 按钮中使用没有确认 window 的功能时,代码运行良好。但是当我想使用确认 window 时,当我点击我的按钮时会显示确认 window,但我的项目没有被删除。
有什么想法吗?
感谢您的帮助!
基本上您是在绑定函数而不是调用它...您应该事先绑定,最好是在构造函数中...然后调用它。 试试这个:
renderPosts() {
this.removeToCollection = this.removeToCollection.bind(this);
return _.map(this.state.catalogue, (catalogue, key) => {
return (
<div className="item col-md-3" key={key} id={key}>
<img src={this.state.catalogue[key].avatarURL} height={150} with={150}/>
<h3>{catalogue.marque}</h3>
<h4>{catalogue.numero}</h4>
<h4>{catalogue.reference}</h4>
<p>{catalogue.cote}</p>
<div className="text-center">
<button className="btn btn-danger" onClick={() => {if(window.confirm('Delete the item?')){this.removeToCollection(key, e)};}}>Supprimer</button>
</div>
</div>
)
})
}
你只是在绑定函数,并没有调用它。
使用 bind
并调用 bind
ed 函数的正确语法。
if (window.confirm("Delete the item?")) {
let removeToCollection = this.removeToCollection.bind(this, 11);//bind will return to reference to binded function and not call it.
removeToCollection();
}
或者您也可以在不绑定的情况下这样做。
if (window.confirm("Delete the item?")) {
this.removeToCollection(11);
}
如果 this 是 removeToCollection
中的关注点,那么使用 arrow function
来定义它。
removeToCollection=(key)=> {
console.log(key);
}
我做了和下面一样的-
I have a smart(class) component
<Link to={`#`} onClick={() => {if(window.confirm('Are you sure to delete this record?')){ this.deleteHandler(item.id)};}}> <i className="material-icons">Delete</i> </Link>
我定义了一个调用删除端点的函数-
deleteHandler(props){
axios.delete(`http://localhost:3000/api/v1/product?id=${props}`)
.then(res => {
console.log('Deleted Successfully.');
})
}
这对我有用!