Reactjs 从子组件中的按钮清空父组件的状态

Reactjs 从子组件中的按钮清空父组件的状态,reactjs,Reactjs,在从子组件中再次单击按钮后,我想从以前的状态中清除子组件的状态 父组件 constructor() { super(); this.state = { events:[], alerts:[], }; } addEvent = newEvent => this.setState(state => { const

在从子组件中再次单击按钮后,我想从以前的状态中清除子组件的状态

父组件

   constructor() {
            super();
            this.state = {
                events:[],
                alerts:[],
            };

          }


addEvent = newEvent => this.setState(state => {
    const {events} = state
    return { events: [...events, ...newEvent]}
  });

  addAlert = newAlert => this.setState(state =>{
    const {alerts} = state
    return {alerts: [...alerts, ...newAlert]
  });

 render(){

    const {events} = this.state
            const {alerts} = this.state
            console.log(alerts);
            return(
                <div >
                    <SearchFlight events={events} alerts={alerts} addAlert={this.addAlert} addEvent={this.addEvent} />

                        <Events events={events}/>
                        <Alerts alerts={alerts}/>

}
handleSubmit= event =>{
        const {addEvent} = this.props
        const {addAlert} = this.props
        event.preventDefault();
        //alert(this.state.search_flight_no);
        var airportValueSelected= this.state.airport;
        var flightValue= this.state.search_flight_no;
        var airportList= FlightInfo.Airport;
        var newEvents=[];
        var newAlerts=[];
        for(var rootKey in airportList){
          if(rootKey===airportValueSelected)
           {

               airportList[rootKey].forEach(element => {


                   if(element.flight_no===flightValue){

                    for(var m=0;m<element.Events.length;m++){

                     var singleEvent={
                       event_name:'',
                       date_time:'',
                     };

                      singleEvent.event_name=element.Events[m].event_name;
                      singleEvent.date_time=element.Events[m].date_time;
                      newEvents.push(singleEvent);
                    }

                    for(var s=0;s<element.Alerts.length;s++){

                      newAlerts.push(element.Alerts[s]["Alert"+(s+1)]);

                    }

                   }

               });
               if(newEvents.length<1 && newAlerts.length<1){
                this.setState({ open: true });
               }
               else{
                 console.log(newEvents);
                 console.log(newAlerts);
               }
               addAlert(newAlerts);  
               addEvent(newEvents);

           }
        }
constructor(){
超级();
此.state={
事件:[],
警报:[],
};
}
addEvent=newEvent=>this.setState(状态=>{
const{events}=状态
返回{events:[…events,…newEvent]}
});
addAlert=newAlert=>this.setState(state=>{
const{alerts}=状态
返回{警报:[…警报,…新警报]
});
render(){
const{events}=this.state
const{alerts}=this.state
控制台日志(警报);
返回(
}
子组件

   constructor() {
            super();
            this.state = {
                events:[],
                alerts:[],
            };

          }


addEvent = newEvent => this.setState(state => {
    const {events} = state
    return { events: [...events, ...newEvent]}
  });

  addAlert = newAlert => this.setState(state =>{
    const {alerts} = state
    return {alerts: [...alerts, ...newAlert]
  });

 render(){

    const {events} = this.state
            const {alerts} = this.state
            console.log(alerts);
            return(
                <div >
                    <SearchFlight events={events} alerts={alerts} addAlert={this.addAlert} addEvent={this.addEvent} />

                        <Events events={events}/>
                        <Alerts alerts={alerts}/>

}
handleSubmit= event =>{
        const {addEvent} = this.props
        const {addAlert} = this.props
        event.preventDefault();
        //alert(this.state.search_flight_no);
        var airportValueSelected= this.state.airport;
        var flightValue= this.state.search_flight_no;
        var airportList= FlightInfo.Airport;
        var newEvents=[];
        var newAlerts=[];
        for(var rootKey in airportList){
          if(rootKey===airportValueSelected)
           {

               airportList[rootKey].forEach(element => {


                   if(element.flight_no===flightValue){

                    for(var m=0;m<element.Events.length;m++){

                     var singleEvent={
                       event_name:'',
                       date_time:'',
                     };

                      singleEvent.event_name=element.Events[m].event_name;
                      singleEvent.date_time=element.Events[m].date_time;
                      newEvents.push(singleEvent);
                    }

                    for(var s=0;s<element.Alerts.length;s++){

                      newAlerts.push(element.Alerts[s]["Alert"+(s+1)]);

                    }

                   }

               });
               if(newEvents.length<1 && newAlerts.length<1){
                this.setState({ open: true });
               }
               else{
                 console.log(newEvents);
                 console.log(newAlerts);
               }
               addAlert(newAlerts);  
               addEvent(newEvents);

           }
        }
handleSubmit=event=>{
const{addEvent}=this.props
const{addAlert}=this.props
event.preventDefault();
//警报(此.状态.搜索航班号);
var airportValueSelected=this.state.airport;
var flightValue=this.state.search\u flightValue\u no;
var airportList=FlightInfo.Airport;
var newEvents=[];
var newAlerts=[];
for(airportList中的var rootKey){
如果(rootKey==airportValueSelected)
{
airportList[rootKey].forEach(元素=>{
if(元素飞行号===飞行值){

对于(var m=0;maddEvents和addAlerts追加值的原因是,您只是在状态中设置当前值,但在使用扩展语法的setState调用中追加它们。您只需编写

addEvent = newEvent => this.setState({
    events: newEvent
  });

  addAlert = newAlert => this.setState({
      alerts: newAlert
  });

您的意思是仅使用当前提交的值更新事件属性吗???@shubhamkhattri yesWorking,但您没有告诉如何格式化
const eachEventName=this.props.events.map((d)=>
  • {d.event\u name}
  • )const eachDateTime=this.props.events.map((d)=>
  • )return({eachEventName}{eachDateTime})
  • 实际上我想要一个带有文本event_name的按钮,然后在该日期_time下面,您只需执行
    this.props.events.map((event)=>{
    • {d.event_name}
    • {d.date time}
    中应该是一个赋值或函数,而不是一个saw表达式。正确的方法是
    {this.props.events.map((event)=>(
    • {event.event\u name}
    • {event.date time})}
    是的,是注释中的一个输入错误