Api 如何为异步调用重新呈现react组件?

Api 如何为异步调用重新呈现react组件?,api,reactjs,Api,Reactjs,我目前正在项目中使用ReactJs, 我有一个按钮,当点击按钮时,有api调用,组件应该被呈现 但到目前为止,使用ComponentDidMount()检查ComponentWillMount()并没有发生这种情况。结果是一样的 如果我遗漏了什么,有人能告诉我吗 代码: 从“React”导入React; 导入“/AddCarrier.css” 从“反应模式库”导入{DataTable,Alert,Loader}; 从“axios”导入axios; 导出默认类AddCarrier扩展React.C

我目前正在项目中使用ReactJs, 我有一个按钮,当点击按钮时,有api调用,组件应该被呈现

但到目前为止,使用ComponentDidMount()检查ComponentWillMount()并没有发生这种情况。结果是一样的

如果我遗漏了什么,有人能告诉我吗

代码:

从“React”导入React;
导入“/AddCarrier.css”
从“反应模式库”导入{DataTable,Alert,Loader};
从“axios”导入axios;
导出默认类AddCarrier扩展React.Component{
建造师(道具){
超级(道具);
this.state={tableContent:{},tableContentAdd:{},carrier:{},responseCarrierList:{},tableContentEdit:{},carrierResponse:{},agentName:,agentType:,error:,ntID:,producerNumber:,ux:“normal”}
this.getList=this.getList.bind(this)
this.addCarrier=this.addCarrier.bind(this)
this.editcharrier=this.editcharrier.bind(this)
this.getListCarrier=this.getListCarrier.bind(this);
}
getList(){
让载波={};
让responseCarrierList={};
变量agentName、agentType、ntID、producerNumber;
常量url=http://localhost:9001/carriers';
axios.post(url{
ntId:“xxxxxx”
})
。然后(rsp=>{
如果(rsp!=未定义){
agentName=rsp.data.agentDetails[0]。agentName;
agentType=rsp.data.agentDetails[0].agentType;
ntID=rsp.data.agentDetails[0].ntID;
producerNumber=rsp.data.agentDetails[0]。producerNumber;
开利=rsp.data.carrier;
responseCarrierList=rsp.data.responseCarrierList;
this.setState({carrier:carrier,responseCarrierList:responseCarrierList,agentName:agentName,agentType:agentType,ntID:ntID,producerNumber:producerNumber});
这个.getListCarrier();
}
})
}
组件willmount(){
这个.getList();
}
getListCarrier(){
var addObj={tableBody:[]};
var editObj={tableBody:[]};
var addcarrierray=[]
this.state.carrier.forEach(carrierad=>{
if(this.state.responseCarrierList.filter((filterCarrier)=>filterCarrier.CARRIER\u NAIC\u CD==carrierAdd.CarrierInicCD)。长度==0){
addcarrieray.push(carrierAdd)}
})
var carrierDetails=this.state.carrier;
/////////////添加载体组件////////////
addCarrierArray.map(承运人=>{
变量元素={}
elements.CarrierName=carrier.vendorNm+“-”+carrier.carrierniaccd;
elements.UserName=this.uname=user}type=“text”id=“uname”placeholder=“enter UserName”className=“c-form-field_uuinput”数据id={carrier.carrierniccd}/>;
elements.Password=this.Password=pass}type=“Password”id=“pass”placeholder=“enter Password”className=“c-form-field\uu input”/>;
元素。操作=添加;
elements.SignUp=;
addObj.tableBody.push(元素)})
/////////////编辑载体组件////////////
this.state.responseCarrierList.map(载波=>{
var元素={};
elements.CarrierName=此.state.carrier.filter((carrierFilter)=>carrierFilter.CarrierNicCD==carrier.carrier\u NAIC\u CD)[0]。供应商M+“-”+carrier.carrier\u NAIC\u CD;
elements.UserName=this.uname=user}type=“text”id=“uname”defaultValue={carrier.UserName}readOnly className=“c-form-field_uuuinput”数据id={carrier.carrier_NAIC_CD}/>;
elements.Password=this.Password=pass}type=“Password”id=“pass”defaultValue=“********”readOnly className=“c-form-field_uuinput”/>;
元素。动作=编辑;
addObj.tableBody.push(元素)
})
this.setState({tableContentAdd:addObj,tableContentEdit:editObj});
}
addCarrier(事件){
const username=event.target.parentElement.parentElement.querySelector(“#uname”).value;
const password=event.target.parentElement.parentElement.querySelector(“#pass”).value;
const carrierName=event.target.parentElement.parentElement.childNodes[0]。innerText
const naic=event.target.parentElement.parentElement.querySelector(“#uname”).getAttribute(“数据id”);
如果(用户名==“”)
this.setState({错误:“需要用户名”});
否则{
此.setState({错误:});
常量url=http://localhost:9001/carriers/carrierUpdate';
axios.post(url{
producerNumber:this.state.producerNumber,
networkId:this.state.ntID,
userId:username,
密码:密码,
naicCode:naic
})。然后(rsp=>{
});
}
}
编辑载体(事件){
开关(event.target.parentElement.parentElement.querySelector(“#编辑”).innerText){
案例“编辑”:
event.target.parentElement.parentElement.querySelector(“#uname”).removeAttribute(“只读”)
event.target.parentElement.parentElement.querySelector(“传递”).removeAttribute(“只读”)
event.target.parentElement.parentElement.querySelector(“#编辑”).innerText=“添加”
打破
案例“添加”:
const username=event.target.parentElement.parentElement.querySelector(“#uname”).value;
const password=event.target.parentElement.parentElement.querySelector(“#pass”).value;
event.target.parentElement.parentElement.querySelector(“#uname”).setAttribute(“只读”,true)
event.target.parentElement.parentElement.querySelector(“#pass”).setAttribute(“只读”,true)
event.target.parentElement.parentElement.querySelector(“#编辑”).innerText=“编辑”
此.addCarrier(事件)
import React from 'react';
import "./AddCarrier.css"
import {DataTable,Alert,Loader} from 'react-pattern-library';

import axios from 'axios';

export default class AddCarrier extends React.Component{
    constructor(props){
        super(props);
        this.state={tableContent:{},tableContentAdd:{},carrier:{},responseCarrierList:{},tableContentEdit:{},carrierResponse:{},agentName:"",agentType:"",error:"",ntID:"",producerNumber:"",ux:"normal"}
        this.getList = this.getList.bind(this)
        this.addCarrier = this.addCarrier.bind(this)
        this.editCarrier = this.editCarrier.bind(this)
        this.getListCarrier = this.getListCarrier.bind(this);
    }

    getList(){
        let carrier={};
        let responseCarrierList={};
        var agentName,agentType,ntID,producerNumber;

        const url = 'http://localhost:9001/carriers';
        axios.post(url,{
            ntId:"xxxxxx"
        })
            .then(rsp => {
                if(rsp!=undefined){
                agentName = rsp.data.agentDetails[0].agentName;
                agentType = rsp.data.agentDetails[0].agentType;
                ntID=rsp.data.agentDetails[0].NTID;
                producerNumber=rsp.data.agentDetails[0].ProducerNumber;
                carrier=rsp.data.carrier;
                responseCarrierList=rsp.data.responseCarrierList;
                this.setState({carrier:carrier,responseCarrierList:responseCarrierList,agentName: agentName, agentType: agentType,ntID:ntID,producerNumber:producerNumber}); 
                this.getListCarrier();
            }
        })

    }
    componentWillMount(){
        this.getList();
    }

    getListCarrier(){
        var addObj={tableBody:[]};
        var editObj={tableBody:[]};
        var addCarrierArray = []
        this.state.carrier.forEach(carrierAdd => {
        if(this.state.responseCarrierList.filter( (filterCarrier) => filterCarrier.CARRIER_NAIC_CD == carrierAdd.carrierNaicCd).length == 0){
            addCarrierArray.push(carrierAdd)} 
        })
        var carrierDetails = this.state.carrier;
        /////////////Add Carrier Component////////////
        addCarrierArray.map(carrier =>{
            var elements = {}
            elements.CarrierName = carrier.vendorNm + " - " + carrier.carrierNaicCd;
            elements.UserName = <input ref={user=> this.uname = user} type="text" id="uname" placeholder="enter username" className="c-form-field__input" data-id={carrier.carrierNaicCd}/>;
            elements.Password = <input ref={pass=> this.password = pass} type="password" id="pass" placeholder="enter password " className="c-form-field__input"/>;
            elements.Action =<button className="c-btn c-btn--secondary c-btn--sm" type="submit" onClick={this.addCarrier}>Add</button>;
            elements.SignUp = <a href={carrier.signupUrl} target="_blank">SignUp</a>;
            addObj.tableBody.push(elements)})

        /////////////Edit Carrier Component////////////
        this.state.responseCarrierList.map(carrier =>{
            var elements = {};
            elements.CarrierName = this.state.carrier.filter( (carrierFilter) => carrierFilter.carrierNaicCd == carrier.CARRIER_NAIC_CD)[0].vendorNm + " - " + carrier.CARRIER_NAIC_CD;             
            elements.UserName = <input ref={user=> this.uname = user} type="text" id="uname" defaultValue = {carrier.USERNAME} readOnly className="c-form-field__input" data-id={carrier.CARRIER_NAIC_CD}/>;
            elements.Password = <input ref={pass=> this.password = pass} type="password" id="pass" defaultValue = "******" readOnly className="c-form-field__input"/>;
            elements.Action =<button className="c-btn c-btn--secondary c-btn--sm" type="submit" onClick={this.editCarrier} id="edit">edit</button>;
            addObj.tableBody.push(elements)
            })
        this.setState({tableContentAdd: addObj,tableContentEdit:editObj});
    }

    addCarrier(event){
        const username=event.target.parentElement.parentElement.querySelector("#uname").value;
        const password=event.target.parentElement.parentElement.querySelector("#pass").value;
        const carrierName = event.target.parentElement.parentElement.childNodes[0].innerText
        const naic = event.target.parentElement.parentElement.querySelector("#uname").getAttribute("data-id");
        if(username=="")
            this.setState({error:"Username is required"});
        else{
            this.setState({error:""});
            const url = 'http://localhost:9001/carriers/carrierUpdate';
            axios.post(url,{
                    producerNumber: this.state.producerNumber,
                    networkId: this.state.ntID,
                    userId:username,
                    password: password,
                    naicCode: naic
                  }).then(rsp => {
                    });
                }
        }

    editCarrier(event){
        switch(event.target.parentElement.parentElement.querySelector("#edit").innerText){
            case "edit":  
                event.target.parentElement.parentElement.querySelector("#uname").removeAttribute("readOnly")
                event.target.parentElement.parentElement.querySelector("#pass").removeAttribute("readOnly")
                event.target.parentElement.parentElement.querySelector("#edit").innerText = "add"
                break;

            case "add":
                const username=event.target.parentElement.parentElement.querySelector("#uname").value;
                const password=event.target.parentElement.parentElement.querySelector("#pass").value;
                event.target.parentElement.parentElement.querySelector("#uname").setAttribute("readOnly",true)
                event.target.parentElement.parentElement.querySelector("#pass").setAttribute("readOnly",true)
                event.target.parentElement.parentElement.querySelector("#edit").innerText = "edit"
                this.addCarrier(event) 
                break;             
        }        
    }
    render(){
        return (
                <div className="carrierDashboard">
                    <div className="add-carrier">
                        {(this.state.agentName!=""?<h3 className="welcome-heading">Welcome {this.state.agentName} ({this.state.agentType})</h3>:<h3/>)}
                        {(this.state.error) ? <Alert type="alert">{this.state.error}</Alert> : <span></span>}
                        {(this.state.tableContentAdd["tableBody"]!=undefined)?<DataTable data={this.state.tableContentAdd} sortable={true} className="c-table--simple"/>:<Loader />}
                    </div>                    
                </div>
            )
    }
}
getList(){
    let carrier={};
    let responseCarrierList={};
    var agentName,agentType,ntID,producerNumber;
    const url = 'http://localhost:9001/carriers';
    axios.post(url,{
        ntId:"xxxxxx"
    })
        .then(rsp => {
            if(rsp!=undefined){
            agentName = rsp.data.agentDetails[0].agentName;
            agentType = rsp.data.agentDetails[0].agentType;
            ntID=rsp.data.agentDetails[0].NTID;
            producerNumber=rsp.data.agentDetails[0].ProducerNumber;
            carrier=rsp.data.carrier;
            responseCarrierList=rsp.data.responseCarrierList;   
                  this.setState({carrier:carrier,responseCarrierList:responseCarrierList,agentName: agentName, agentType: agentType,ntID:ntID,producerNumber:producerNumber}, () => this.getListCarrier() ); 
        }
    })
}
getList(){
    let carrier={};
    let responseCarrierList={};
    var agentName,agentType,ntID,producerNumber;

    const url = 'http://localhost:9001/carriers';
    axios.post(url,{
        ntId:"xxxxxx"
    })
        .then(rsp => {
            if(rsp!=undefined){
            agentName = rsp.data.agentDetails[0].agentName;
            agentType = rsp.data.agentDetails[0].agentType;
            ntID=rsp.data.agentDetails[0].NTID;
            producerNumber=rsp.data.agentDetails[0].ProducerNumber;
            carrier=rsp.data.carrier;
            responseCarrierList=rsp.data.responseCarrierList;
            this.setState({carrier:carrier,responseCarrierList:responseCarrierList,agentName: agentName, agentType: agentType,ntID:ntID,producerNumber:producerNumber}); 
        }
    })

}
componentWillMount(){
    this.getList();
}
componentDidMount(){
    this.getListCarrier();
}