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})}
是的,是注释中的一个输入错误