我正在尝试使用react构建一个.net核心Web应用程序。但是,我正在努力与一些api调用和功能。这可能是以前问过的,但我找不到适合自己的解决方案。
usort($input, function($a, $b) {
return $a->a <=> $b->a;
});
这是我的Doc.js
class Documents extends Component{
constructor(props){
super(props);
this.state = {
docs: []
};
this.deleteHandle = this.deleteHandle.bind(this);
}
componentDidMount(){
const url = 'api/Documents';
fetch(url)
.then((response) => {
return response.json();
})
.then((data) =>{
this.setState({
docs: data
});
})
.catch((error) => console.log(error));
}
renderDocuments(){
return this.state.docs.map((doc) => (
<Doc key={doc.id} doc = {doc}/>
));
}
deleteHandle(id) {
fetch('api/Documents/'+id, { method: 'DELETE' })
.then((response) => {
return response.json();
})
.catch((error) => console(error));
}
render(){
return (
<ul>
{this.renderDocuments()}
</ul>
);
}export default Documents;
API和Get可以正常工作,但是当我单击DELETE按钮时,它说:_this.deleteHandle不是函数。
请帮助,非常感谢。
答案 0 :(得分:3)
Doc
没有称为deleteHandle
的属性。只有Documents
有。您需要将处理程序传递给Doc
:
const Doc = ({ doc, onDelete }) => (
<li>
<p>{doc.id} - {doc.documentCode} - {doc.documentName} - {doc.issuedDate}</p>
<a onClick={onDelete}>Delete</a>
</li>);
export default Doc;
在Documents.renderDocuments
中:
return this.state.docs.map((doc) => (
<Doc key={doc.id} doc = {doc} onDelete={() => this.deleteHandle(doc.id)}/>
));
答案 1 :(得分:1)
您需要将delete事件传递给每个Doc
,以便可以使用它:
renderDocuments(){
return this.state.docs.map((doc) => (
<Doc key={doc.id} doc = {doc} onDelete={(id) => this.deleteHandle(id)} />
));
}
然后在Doc
中输入
const Doc = ({ doc, onDelete }) => (
<li>
<p>{doc.id} - {doc.documentCode} - {doc.documentName} - {doc.issuedDate}</p>
<a onClick={onDelete(doc.id)}>Delete</a>
</li>);
export default Doc;
答案 2 :(得分:0)
您的问题是您直接调用deleteHandle,而不是传递调用它的函数。使用箭头功能,解决方案非常简单:
methods:
getData: function() {
Axios({
url: url,
type: get
})
.then((response) => {
//getData
and here I have click event
})