Javascript 更改用于在React中显示的集合
我有一个react应用程序,可以从json文件中获取产品,我在页面顶部添加了两个按钮,这样每个按钮都可以显示json状态的数据 所以有菜单1状态,菜单2和活动列表,我做了两个功能Javascript 更改用于在React中显示的集合,javascript,json,reactjs,onclick,jsx,Javascript,Json,Reactjs,Onclick,Jsx,我有一个react应用程序,可以从json文件中获取产品,我在页面顶部添加了两个按钮,这样每个按钮都可以显示json状态的数据 所以有菜单1状态,菜单2和活动列表,我做了两个功能 Active1() { this.setState({ activelist: !this.state.items }); } Active2() { this.setState({ activelist: !this.state.items2 }); } 切换它们的按钮是 &
Active1() {
this.setState({ activelist: !this.state.items });
}
Active2() {
this.setState({ activelist: !this.state.items2 });
}
切换它们的按钮是
<button className="changebutton" onClick={this.Active1}>
Menu 1
</button>
<button className="changebutton" onClick={this.Active2}>
Menu2
</button>
菜单1
菜单2
这将在单击时显示活动列表,即menu1和menu2,但它不起作用
文件名
Itemlist.js
(您可能需要单击沙盒中的刷新按钮)创建第三个数组(可能是activeList
),然后只需调用按钮上的函数,单击该函数即可将项
或项2
复制到activeList
中。最后,将呈现方法中对项的所有引用替换为activeList
。以下是缩写代码:
class ItemList extends React.Component {
state = {
...
items: [],
items2: [],
activelist: [],
};
componentDidMount() {
dataPromise.then(
result => {
this.setState({
isLoaded: true,
items: result,
activelist: result
});
},
...
);
dataPromise2.then(
result2 => {
this.setState({
isLoaded: true,
items2: result2
});
},
...
);
}
constructor(props) {
super(props);
...
this.Active1 = this.Active1.bind(this); // ADDED
this.Active2 = this.Active2.bind(this); // ADDED
}
...
Active1() {
this.setState({ activelist: Object.assign({}, this.state.items) }); //CHANGED
}
Active2() {
this.setState({ activelist: Object.assign({}, this.state.items2) }); //CHANGED
}
render() {
...
return (
<div>
<button className="changebutton" onClick={this.Active1}>
Menu 1
</button>
<button className="changebutton" onClick={this.Active2}>
Menu2
</button>
...
);
}
}
}
class ItemList扩展了React.Component{
状态={
...
项目:[],
项目2:[],
活动列表:[],
};
componentDidMount(){
那么(
结果=>{
这是我的国家({
isLoaded:是的,
项目:结果,
活动列表:结果
});
},
...
);
dataPromise2.then(
结果2=>{
这是我的国家({
isLoaded:是的,
项目2:结果2
});
},
...
);
}
建造师(道具){
超级(道具);
...
this.Active1=this.Active1.bind(this);//添加
this.Active2=this.Active2.bind(this);//已添加
}
...
Active1(){
this.setState({activelist:Object.assign({},this.state.items)});//已更改
}
活性2(){
this.setState({activelist:Object.assign({},this.state.items2)});//已更改
}
render(){
...
返回(
菜单1
菜单2
...
);
}
}
}
这是一个codesandbox:codesandbox上出现了一些错误,那么您试图实现什么,在一个api调用成功后,您需要调用另一个api,这是您的问题?我试图以一种方式执行此操作,如果我单击菜单1,它将显示正常的data1 api 1 datapromise1,当点击按钮2时,它会显示数据2 api 2 DataPromise2。那么问题是什么,问题是代码框中出现了一些错误。你能解决这个问题吗。检查该问题将很有帮助。现在的问题是什么呢?创建第三个数组(可能是activeList
),然后简单地调用按钮上的函数,单击该函数可以将项
或items2
复制到activeList
。最后,将render方法中对项的所有引用替换为activeList
@DILEEPTHOMAS,因为我已经修复了代码框