React中的API请求

时间:2018-12-17 10:58:54

标签: .net reactjs api asp.net-core

我正在尝试使用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不是函数。

请帮助,非常感谢。

3 个答案:

答案 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
    })