Javascript 从按钮单击事件渲染React组件
我正在开发一个小的react应用程序,它由一个图表组件和一些其他组件组成。图表组件是一个单独的文件/组件/子组件。当我单击主容器中的按钮时,它调用承诺(使用axio),并返回一些数据作为响应。此响应数据被设置为状态,该状态作为道具传递给图表组件。但图表不会加载。这是因为图表已经加载,因为初始状态为空,图表也为空。是否只有在promise返回数据后才能呈现图表组件 这是我的密码 按钮单击事件Javascript 从按钮单击事件渲染React组件,javascript,reactjs,asynchronous,Javascript,Reactjs,Asynchronous,我正在开发一个小的react应用程序,它由一个图表组件和一些其他组件组成。图表组件是一个单独的文件/组件/子组件。当我单击主容器中的按钮时,它调用承诺(使用axio),并返回一些数据作为响应。此响应数据被设置为状态,该状态作为道具传递给图表组件。但图表不会加载。这是因为图表已经加载,因为初始状态为空,图表也为空。是否只有在promise返回数据后才能呈现图表组件 这是我的密码 按钮单击事件 ClickMe = () =>{ axios.get('http://xyz
ClickMe = () =>{
axios.get('http://xyzsdsd.com/abc')
.then((response)=>{
this.setState({
tags:response.data
});
console.log(this.state.tags);
}).catch((err)=>{
console.log(err);
});
}
渲染函数
render(){
return(
<div>
<otherComponents/>
<chart data={this.state.tags}/>
</div>
);
}
render(){
返回(
);
}
在渲染中添加一个条件,仅在state.tags对象有效时渲染图表组件。在初始渲染时,图表将不会被渲染。当AJAX调用返回并调用setState()时,将使用非null state.tags再次调用render(),从而呈现图表
render(){
let chart;
if (this.state.tags) {
chart = <chart data={this.state.tags}/>;
}
return (
<div>
<otherComponents/>
{chart}
</div>
);
}
render(){
让图表;
if(this.state.tags){
图表=;
}
返回(
{chart}
);
}
在渲染中添加一个条件,仅在state.tags对象有效时渲染图表组件。在初始渲染时,图表将不会被渲染。当AJAX调用返回并调用setState()时,将使用非null state.tags再次调用render(),从而呈现图表
render(){
let chart;
if (this.state.tags) {
chart = <chart data={this.state.tags}/>;
}
return (
<div>
<otherComponents/>
{chart}
</div>
);
}
render(){
让图表;
if(this.state.tags){
图表=;
}
返回(
{chart}
);
}
对于良好的用户体验,您可能需要考虑组件或UI部分可能遇到的不同状态和流程
从头顶上看,我有三种状态<代码>空板岩,加载
(因为您接触服务器也可能需要一些时间)和带数据的图表
因此,根据不同的状态,您可能希望显示不同的组件
我会通过构造函数在ES6中为设置InitialState,或者在getInitialState函数中不设置ES6
如果您想启动ajaxonLoad
组件axios.get
,您应该考虑放置组件didmount
。
这也适用于React路由器。因此,每当您导航到ChartComponent时,它就会在挂载时加载
如果您碰巧认识到渲染函数中的If语句变得复杂,因为您的业务逻辑需要更多。您肯定应该检查Redux(与React的结合),以便更好地控制状态和数据流
真正伟大的内部结构如何与redux反应应用程序可以在这个自由找到视频系列。
希望这能有所帮助。对于良好的用户体验,您可能需要考虑组件或UI部分可能遇到的不同状态和流程 因此,从头顶上看,我将有3种状态。
空板岩
,加载
(因为您接触服务器也可能需要一些时间)和图表数据
因此,根据不同的状态,您可能希望显示不同的组件
我会通过构造函数在ES6中为设置InitialState,或者在getInitialState函数中不设置ES6
如果您想启动ajaxonLoad
组件axios.get
,您应该考虑放置组件didmount
。
这也可以与React路由器一起工作。因此,每当您导航到ChartComponent时,它会在安装时加载
如果您碰巧意识到渲染函数中的If语句变得复杂,因为您的业务逻辑需要更多。您肯定应该检查Redux(与React的组合),以便更好地控制状态和数据流
真正伟大的内部结构如何与redux反应应用程序可以在这个自由找到视频系列。
希望这能有所帮助。或者在构造函数中为图表设置初始数据,或者在构造函数中为图表设置初始数据,或者如果您继续以这种方式使用React,您将遇到无数的麻烦。您应该研究和流行的实现/调整。许多人认为React是一个功能齐全的框架,如Angular–不是。React是一个小型库,用于处理前端应用程序的特定部分。React让您可以自由选择其他工具来完成其他任务,如获取数据、维护大型应用程序状态、路由等。如果您继续以这种方式使用React,您将遇到无数麻烦。您应该仔细研究React和流行的实现/改编。许多人认为React是一个功能齐全的框架,如Angular,但事实并非如此。React是一个小型库,用于处理前端应用程序的特定部分。React让您可以自由选择其他工具来完成其他任务,如获取数据、维护大型应用程序状态、路由等。除了使用flux或redux,我似乎没有其他选择。无论如何,谢谢。除了使用flux或redux,我似乎没有其他选择。无论如何,谢谢。